android drawable如何自动更改?

android drawable如何自动更改?,android,drawable,Android,Drawable,我有一个android应用程序,它使用许多图像。应用程序将用于不同的分辨率。我只使用一组图像,图像保存在“drawable mdpi”中。 所以“当我以高分辨率运行时,图像变得模糊”。 因此,解决这个问题的方法可能是将不同分辨率的不同图像保存在可绘制的hdpi、ldpi等中 这样做就足够了,还是我必须通过代码更改图像?或者手机会自动将perfact图像调整到可抽式屏幕中 有人能举个例子吗 这就足够了。这就是drawable目录中有不同文件夹的原因,但请注意,Android 1.5只支持一个名为d

我有一个android应用程序,它使用许多图像。应用程序将用于不同的分辨率。我只使用一组图像,图像保存在“drawable mdpi”中。 所以“当我以高分辨率运行时,图像变得模糊”。 因此,解决这个问题的方法可能是将不同分辨率的不同图像保存在可绘制的hdpi、ldpi等中

这样做就足够了,还是我必须通过代码更改图像?或者手机会自动将perfact图像调整到可抽式屏幕中


有人能举个例子吗

这就足够了。这就是drawable目录中有不同文件夹的原因,但请注意,Android 1.5只支持一个名为drawable的文件夹,没有子目录(但1.5上没有分辨率高于mdpi的手机)

如果将图像放入
ldpi、mdpi、,hdpi
xhdpi
文件夹Android根据当前设备的dpi选择图像

如果您只添加
mdpi
Resources并将其加载到
hdpi
设备上,Android将以
1.5
的系数放大图像。如果您在
ldpi
设备上打开图像,则图像将以
0.75
的系数缩小。 应用缩放以使图像具有(几乎)相同的物理大小,所有显示都具有任何dpi

如果此自动缩放后图像模糊(或缩小时细节松散),则应为每个dpi添加不同的图像。如果您有缩放后外观良好的简单图像,则只需将一个图像添加到任何dpi文件夹中

编辑: 在Android上,没有根据屏幕分辨率自动选择图像的默认方式。正如文件所说:

当添加对多屏幕的支持时,应用程序不能直接使用分辨率;应用程序应仅关注屏幕尺寸和密度,如广义尺寸和密度组所规定


(请参阅)。

确保图像始终正确缩放的最佳方法之一是使用9个面片绘图工具。安卓将根据屏幕大小自动调整尺寸。它们最适合用于通常会改变大小的东西(按钮、编辑文本、微调器等),但可以在正确的设置中正确应用

使用9个补丁图像的一个优点是节省空间;在我们的应用程序中内置三个不同版本的图像可能会在一段时间后变得相当大,但有9个补丁,您只需要一个副本

有关更多详细信息,请参见此处:

您也可以考虑使用X大屏幕来创建平板电脑(创建一个可绘制的XHDPI文件夹)。我有一个应用程序,所有可绘制的图像都有不同的名称,但当我使用该图像时,只能使用可裁剪的MDP。在不同的决议上也。。那么问题是什么呢?你在模拟器或实际的手机上测试它?如果你确定每个模拟器都有不同的分辨率,那么这应该可以工作。不要忘记dpi指的是像素的密度(像素数除以屏幕宽度或高度)。解决方法是在res文件夹中创建布局hdpi、布局mdpi文件夹,并为每个布局设置不同的图像,但首先确保您在模拟器中的屏幕密度不同,同样,您提到的方法应该可行,但在我的应用程序中仅使用可绘制mdpi。分辨率也不同。(我在layout中只写了一个main.xml文件。)如果您只使用mdpi文件夹保存图像,它们将在hdpi和xhdpi设备上放大,在ldpi设备上缩小。您永远不需要创建多个布局。Android会自动从dpi文件夹中选择图像。如果您使用hdpi和mdpi文件夹,hdpi设备很可能会选择图像的hdpi版本。我有一个应用程序,其中所有可绘制图像都有不同的图像,但名称相同,当我使用ImageView在布局中使用该图像时,仅使用可绘制mdpi。在不同的决议上也。。那么问题出在哪里?你是说结果吗?你不能添加根据Android分辨率选择的图像-只有dpi(和一些其他参数)是的,我指的是分辨率。我想在图像达到更高dpi时自动更改图像。嘿,你说得对。如果可以的话,请给我一张9补丁的图片。我不知道你说的是什么意思。您可以使用任何照片编辑器(Photoshop、GIMP等)通过将图像扩展1像素边框来创建自己的9个补丁图像。在此边界内,沿要缩放的图像部分绘制一条黑线。如果您不想手动执行此操作,可以在SDK中使用Google的draw9patch工具。打开终端窗口,导航到SDK保存在计算机上的位置,然后运行程序“draw9patch”。您将看到一个交互式窗口,在该窗口中,您可以围绕图像的边界绘制线,并观察它们的缩放。