我的应用中有这个可绘制的文件夹:
绘制
drawable -hdpi,mdpi,ldpi,xhdpi和xxhdpi。
绘制 -sw240dp-土地xxxhdpi
绘制 -sw360dp-土地xxhdpi
绘制 -sw6000dp-土地xhdpi
我在所有这些文件夹中都有相同大小的可绘制文件。我需要那些文件夹导致景观密度。
有什么方法可以避免在不同的可绘制文件夹中处理相同的文件吗?
提前致谢
答案 0 :(得分:2)
有什么方法可以避免在不同的可绘制文件夹中处理相同的文件吗?
首先摆脱那些你不需要的东西:
res/drawable/
是不必要的,因为它永远不会被使用,因为你在各种密度桶中都有可绘制的东西。对于您未使用的密度(例如res/drawable-*dpi/
),Android会始终根据您的-tvdpi/
资源调整其中一个以匹配屏幕密度。
如果res/drawable-sw360dp-land-xxhdpi/
的图标文件与res/drawable-xxhdpi/
中的图标文件相同,则您不需要res/drawable-sw360dp-land-xxhdpi/
。
如果res/drawable-sw6000dp-land-xhdpi/
的图标文件与res/drawable-xhdpi/
中的图标文件相同,那么您不需要`res / drawable-sw6000dp-land-xhdpi /.
等等
除此之外,您可以使用bitmap resource aliases允许一个位图文件在多个资源目录中表示。
答案 1 :(得分:1)
是的,有,但代价是一些轻微的扭曲和仔细的布局设计。你能做的就是将你的高分辨率画面放入drawable-nodpi; Android将从该文件夹中拉出drawable而不进行缩放。接下来,为各种屏幕尺寸创建一系列维度文件dimens.xml。例如,对于正常尺寸的屏幕:
<resources>
<dimen name="dim_0dp">0dp</dimen>
<dimen name="dim_1dp">1dp</dimen>
<dimen name="dim_2dp">2dp</dimen>
<dimen name="dim_3dp">3dp</dimen>
<dimen name="dim_4dp">4dp</dimen>
<dimen name="dim_5dp">5dp</dimen>
<dimen name="dim_6dp">6dp</dimen>
<dimen name="dim_7dp">7dp</dimen>
<dimen name="dim_8dp">8dp</dimen>
<dimen name="dim_9dp">9dp</dimen>
...
</resources>
而且,sw-600dp平板电脑的资源文件将如下所示:
<resources>
<dimen name="dim_0dp">0dp</dimen>
<dimen name="dim_1dp">1.5dp</dimen>
<dimen name="dim_2dp">3dp</dimen>
<dimen name="dim_3dp">4.5dp</dimen>
<dimen name="dim_4dp">6dp</dimen>
...
</resources>
然后,在您使用ImageView的布局中的每个位置或使用drawable设置背景时,请确保根据您的尺寸文件指定宽度和高度。例如:
<ImageView
android:layout_width="@dimens/dim_10dp"
android:layout_height="@dimen/dim_20dp" />
因此,在手机上,图像将缩放到10dp和20dp;而在600dp的平板电脑上,它将缩放到15dp和30dp。这意味着一些轻微的失真,但由于你缩小而不是向上,所以失真很小,很难被大多数用户检测到。
这是我们用于发布三款成功游戏的策略,否则我们的APK将会非常庞大。