1

我知道 android 会根据它们的位置(-ldpi、-mdpi 等)选择可绘制对象。如果我有两组可绘制对象,一组用于 mdpi 和 ldpi,另一组用于 hdpi 和 xhdpi,我应该如何组织我的图像?

4

1 回答 1

0

目前,我没有遇到任何对dpi 文件夹进行分组的可能性。但你仍然有选择:

虚拟可绘制:

将您的图像放入您的普通/drawable文件夹并将它们命名为image1_low.pngimage1_high.png。现在将“虚拟可绘制”文件image1_dummy.xml放入您的/drawable-ldpi /drawable-mdpi文件夹中,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/image1_low" />

/drawable-hdpi 文件夹也是如此/drawable-xhdpi,但现在使用@drawable/image1_high而不是@drawable/image1_low.

现在您可以参考假人的名称,例如

getResources().getDrawable(R.drawable.image1_dummy);

在您的代码中获得所需的drawable。

程序化:

您不仅限于使用文件夹,还有一种编程方法(感谢 https://stackoverflow.com/a/5323437/1140682):

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch(metrics.densityDpi){
   case DisplayMetrics.DENSITY_XHIGH:
         // assign your high-res version
         break;
   case DisplayMetrics.DENSITY_HIGH:
         // assign your high-res version
         break;
   default:
         // assign your low-res version
         break;
}
于 2013-01-12T20:41:36.030 回答