[英]Reuse drawable images for different screen sizes and densities on Android
背景:我正在为平板电脑(风景)开发一个Android应用程序,其图像资源的分辨率为1920x1200。 该分辨率适合以下屏幕尺寸和密度:
drawable-xlarge-hdpi
drawable-large-xhdpi
问题:如果我在这两个文件夹中包含所有重复的图像资源,则APK的最终大小将不必要地大
我的方法不成功:我尝试使用Alias来实现此处定义的drawable: http : //developer.android.com/guide/topics/resources/providing-resources.html#AliasResources
我有我的图像资源:
res/drawable-nodpi/image_cmn.png
和相应屏幕大小和密度文件夹中的两个别名:
res/drawable-xlarge-hdpi/image.xml
res/drawable-large-xhdpi/image.xml
image.xml:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/image_cmn" />
当然,当我在布局文件中使用我的图像时,我引用了别名:
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/image" />
但遗憾的是Android没有正确调整我的测试平板电脑(mdpi)的资源,结果是我有更大的图像。
我试图将原始png移动到res / drawable甚至res / raw但结果与res / drawable-nodpi相同 。
如果我将此png移动到res / drawable-xlarge-hdpi (与xml别名相同),结果是正确的但自然不能解决我的问题因为我也必须将它们复制到res / drawable-large-xhdpi和apk大小增加。
有谁知道如何实现这一目标?
我试图避免在ImageViews上使用wrap_content,因为不同的平台版本会不同地调整图像大小,如果在dp中放置一个明确的宽度和高度,那么选择哪个图像并不重要。
在你的情况下,我会在drawable / xhdpi中有一个图像。 在dp中的布局文件中指定它的宽度和高度。 对于1920x1200px的图像,即layout_width =“960dp”layout_height =“600dp”
与大型平板电脑相比,x-large平板电脑上的图像尺寸大致相同。
如果您希望图像在x-large平板电脑上更大,请包含第二个布局文件,其中图像的宽度和高度会增加但保持相同的图像。
或者,您可以使用大型和x大型之间不同的维度资源。
我可以为这个问题提出两个解决方案:
第一:
ImageView
。 第二个(它很难看,但非常快):
只需使用tinypng.com压缩您的png图像即可 。 它可以将图像重新调整到70-80%而不会降低质量(适用于移动设备)。
这个怎么样:
res/drawable-nodpi
res/layout-xlarge
, res/layout-large
, res/layout
ImageView
上使用此图像时,请勿使用match_parent
或wrap_content
,而是使用dp中的计算大小。 这应该工作,但是,缺点是它不使用预缩放 ,这意味着在较低的dpi设备上,它将消耗更多的内存。
如果你想为所有尺寸的设备使用相同的图像,那么我认为你必须使用9-Patch Images。
Android官方文章点击此处。
之前:
后:
请参阅: Android 9 Patch Image Tutorial
希望能帮助到你。
如果你想为所有尺寸的设备使用相同的图像,那么我认为你应该使用9补丁图像,每个布局包含在android中的线性布局内的重量标签。 我认为这是100%的工作。 我确定。 因为我使用这种方法进行通用应用(意味着平板电脑和设备应用)
好的,我得到了你的问题。我的话与这个问题有关
有两种方式,我推荐两种方式。
第一种方式 (与您当前的问题相关更方便。)
如果大小变大,则上传多个apk。
按照官方指南 。
第二种方式我更喜欢用这种方式。
创建多个布局。 如下
res / layout /main_activity.xml --->#适用于手机 (可用宽度小于600dp)
res / layout-sw600dp /main_activity.xml - >#适用于7“平板电脑 (600dp宽大)
res / layout-sw720dp /main_activity.xml#适用于10英寸平板电脑 (720dp宽大)
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.