如何找出使用哪种可绘制资源?

时间:2012-02-13 07:00:11

标签: android android-layout

我想知道在运行来自ldpi,mdpi,hdpi或xhdpi的应用程序时使用了哪个可绘制资源。

6 个答案:

答案 0 :(得分:7)

您应该能够按照here所述获取设备的显示属性,然后通过将结果与此列表进行比较来确定运行时正在使用的资源:

  • ldpi:低密度屏幕;大约120dpi。
  • mdpi:中等密度(在传统的HVGA上)屏幕;大约160dpi。
  • hdpi:高密度屏幕;大约240dpi。
  • xhdpi:超高密度屏幕;大约320dpi。在API级别8中添加
  • nodpi:这可用于您不希望缩放以匹配设备密度的位图资源。
  • tvdpi:屏幕介于mdpi和hdpi之间;大约213dpi。这不被视为“主要”密度组。它主要用于电视,大多数应用程序不需要它 - 提供mdpi和hdpi资源就足以满足大多数应用程序的要求,系统会根据需要进行扩展。此限定符是在API级别13中引入的。

根据这些信息,您可以推断出以下内容,这些内容也可能与您的问题相关:

  

四种主要密度之间存在3:4:6:8的缩放比例   (忽略tvdpi密度)。因此,ldpi中的9x9位图为12x12英寸   mdpi,hdpi为18x18,xhdpi为24x24。

答案 1 :(得分:5)

您必须首先获得设备的密度。

int density= getResources().getDisplayMetrics().densityDpi;

switch(density)
{
case DisplayMetrics.DENSITY_LOW:
   Toast.makeText(context, "LDPI", Toast.LENGTH_SHORT).show();
    break;
case DisplayMetrics.DENSITY_MEDIUM:
     Toast.makeText(context, "MDPI", Toast.LENGTH_SHORT).show();
    break;
case DisplayMetrics.DENSITY_HIGH:
    Toast.makeText(context, "HDPI", Toast.LENGTH_SHORT).show();
    break;
case DisplayMetrics.DENSITY_XHIGH:
     Toast.makeText(context, "XHDPI", Toast.LENGTH_SHORT).show();
    break;
}

答案 2 :(得分:4)

我们可以通过了解设备的屏幕密度来确定这一点。

getResources().getDisplayMetrics().densityDpi

它将是DENSITY_LOW,DENSITY_MEDIUM或DENSITY_HIGH。

答案 3 :(得分:1)

这不是一个确切的答案,但你看了一下:http://developer.android.com/guide/practices/screens_support.html

ldpi:低密度(ldpi)屏幕的资源(~120dpi)
mdpi:中密度(mdpi)屏幕的资源(~160dpi)
hdpi:高密度(hdpi)屏幕的资源(~240dpi)
xhdpi:超高密度(xhdpi)屏幕(~320dpi)的资源

这些是一般指导原则,它不是完美的,但它是一个非常好的开始。

答案 4 :(得分:1)

从布局文件夹中打开xml文件。在底部,您将找到图形布局选项卡。在那里,您将能够看到xml文件的图形视图。对于左上角,选择要测试可绘制的不同分辨率。它会相应刷新视图。

答案 5 :(得分:0)

以下是查找该示例的示例代码。 只需将不同的抽屉放在不同的文件夹中,并检查设备自动拾取的图像。

http://droidschools.com/archives/63