dpi:“dot per inch”的缩写,每英寸像素数。
drawable-ldpi的dpi为120
drawable-mdpi的dpi为160
drawable-hdpi的dpi为240
drawable-xhdpi的dpi为320
另外还得知道一个‘屏幕密度’的概念,呃,这个词语是我自己杜撰的,其实就是知道android的一个规定:dpi为160的屏幕密度为1,其他照着算就行了。
获取屏幕分辨率的代码
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width1 = dm.widthPixels; int height1 = dm.heightPixels; Toast.makeText(this, width1 + "*" + height1, Toast.LENGTH_SHORT).show(); }
下面这段代码的desity表示设备每英寸显示160个物理像素,则会
取drawable-mdpi下的图片,为1.5,
取drawable-hdpi,为2,
取drawable-xhdpi,为0.75,
取drawable-ldpi,看看手机屏幕的密度吧(800*1280,应该是2),
这样就能确定到底是取的哪个目录下的图片,再进一步确定问题到底出现在哪。
DisplayMetrics metrics = null; metrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); float density = metrics.density;
我的手机是三星i9003,分辨率是480*800,测试过为drawable-hdpi,之前一直很苦恼为什么一个42*42的图片显示出来是72*72,原来是我把它放在drawable-mdpi下了,郁闷了半天