在我的 Android 应用程序中,我将一些图像保留在"mdpi"中并保留在"ldpi"中。然后我的应用程序也可以在各种设备(虚拟设备和移动设备)上正常运行。图像不是假设是根据设备的分辨率获取的。怎么会显示???
4 回答
mdpi 和 ldpi 是覆盖。如果android通过名称找到一个drawable,它会使用它,但是如果存在多个不同分辨率的图像,它将选择最接近的一个。
默认情况下,Android 会缩放您的位图可绘制对象 (.png、.jpg 和 .gif 文件)和九补丁可绘制对象(.9.png 文件),以便它们在每个设备上以适当的物理尺寸呈现。
例如,baseline
如果您的应用程序只为,提供位图可绘制对象medium screen density (mdpi)
,那么系统在高密度屏幕上时会放大它们,而在低密度屏幕上时会缩小它们。这种缩放会导致位图中出现伪影。为确保您的位图看起来最好,您应该包含针对不同屏幕密度的不同分辨率的替代版本。
可用于密度特定资源的配置限定符是ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
. 例如,高密度屏幕的位图应该放在res/drawable-hdpi
.
有关屏幕的更多信息,您应该参考这个。
Android 有一个非常具体的算法来选择正确的可绘制对象。这是它的样子:
这里有详细解释:
http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch
场景如下:
布局:-
res/layout/my_layout.xml // layout for normal screen size ("default") (320 * 480)
res/layout-small/my_layout.xml // layout for small screen size (240 * 320)
res/layout-large/my_layout.xml // layout for large screen size (480 * 800/854)
res/layout-xlarge/my_layout.xml // layout for extra large screen size (720/800 * 1280)
可绘制对象:-
res/drawable-mdpi/my_icon.png // bitmap for medium density, used by layout-small & layout
res/drawable-hdpi/my_icon.png // bitmap for high density, used by layout-large
res/drawable-xhdpi/my_icon.png // bitmap for xtra-high density, used by layout-xlarge
希望它有所帮助。如果有任何困惑,请询问。请同时阅读一次Screens Support APIs
谢谢。