Android 避免在不同的绘图文件夹中处理相同的绘图
我的应用程序中有以下可绘制文件夹: 可拉伸 可绘制-hdpi、mdpi、ldpi、xhdpi和xxhdpi 可抽出式-sw240dp接地xxxhdpi 可抽出式-sw360dp陆地xxhdpi 可抽出式-sw6000dp陆上xhdpi 我在所有这些文件夹中都有相同大小的可绘制文件。我需要那个些文件夹,因为风景中有密度 有什么方法可以避免在不同的可绘制文件夹中处理相同的文件 提前谢谢 有什么方法可以避免在不同的可绘制文件夹中处理相同的文件 从摆脱你不需要的东西开始:Android 避免在不同的绘图文件夹中处理相同的绘图,android,drawable,Android,Drawable,我的应用程序中有以下可绘制文件夹: 可拉伸 可绘制-hdpi、mdpi、ldpi、xhdpi和xxhdpi 可抽出式-sw240dp接地xxxhdpi 可抽出式-sw360dp陆地xxhdpi 可抽出式-sw6000dp陆上xhdpi 我在所有这些文件夹中都有相同大小的可绘制文件。我需要那个些文件夹,因为风景中有密度 有什么方法可以避免在不同的可绘制文件夹中处理相同的文件 提前谢谢 有什么方法可以避免在不同的可绘制文件夹中处理相同的文件 从摆脱你不需要的东西开始: res/drawable/是
是不必要的,因为它永远不会被使用,因为您在各种密度桶中都有drawable。Android将始终缩放您的res/drawable/
资源之一,以匹配您未使用的屏幕密度(例如,res/drawable-*dpi/
)-tvdpi/
- 如果
中的图标文件与res/drawable-sw360dp-land-xxhdpi/
中的图标文件相同,则不需要res/drawable-xxhdpi/
res/drawable-sw360dp-land-xxhdpi/
- 如果
中的图标文件与res/drawable-sw6000dp-land-xhdpi/
中的图标文件相同,则不需要`res/drawable-sw6000dp-land-xhdpi/res/drawable-xhdpi/
- 等等
除此之外,您还可以使用允许在多个资源目录中表示一个位图文件。是的,有,但代价是一些轻微的扭曲和仔细的布局设计。你所能做的就是把你的高分辨率可绘制图像放到可绘制的nodpi中;Android将从该文件夹中拉出可绘制文件,而无需缩放。接下来,为各种屏幕大小创建一系列维度文件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>
0dp
1dp
2dp
3dp
4dp
5dp
6dp
7dp
8dp
9dp
...
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
android:layout_width="@dimens/dim_10dp"
android:layout_height="@dimen/dim_20dp" />
0dp
1.5dp
3dp
4.5dp
6dp
...
然后,在布局中使用ImageView或使用可绘制文件设置背景的每个位置,确保根据dimens文件指定宽度和高度。例如:
<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
android:layout_width="@dimens/dim_10dp"
android:layout_height="@dimen/dim_20dp" />
因此,在手机上,图像将缩放到10dp和20dp;然而,在600dp平板电脑上,它将缩放到15dp和30dp。这意味着一些轻微的失真,但由于您正在缩小而不是增大,失真是最小的,对大多数用户来说很难检测到
这是我们用来运送三款成功游戏的策略,否则我们的APK将是巨大的。谢谢你的回答。。。我在我的drawable文件夹中有我的xml drawable,这很有用。:)@m:对不起,根据你的问题,我假设你所有指定的目录中的每个可绘制文件都是重复的。谢谢,我也会尝试一下。