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

Vaa*_*aaS 12 android android-layout

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

MH.*_*MH. 7

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

  • 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位图是mdpi为12x12,hdpi为18x18,xhdpi为24x24.


Har*_*hid 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;
}
Run Code Online (Sandbox Code Playgroud)