上下文 我正在为平板电脑(风景)开发一个Android应用程序,其图像资源的分辨率为1920x1200。该分辨率适合以下屏幕尺寸和密度:
drawable-xlarge-hdpi
drawable-large-xhdpi
问题: 如果我在这两个文件夹中包含所有重复的图像资源,则APK的最终大小将不必要地重
我不成功的方法: 我试图在这里定义的drawables中使用Alias: 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尺寸增加。
有谁知道如何实现这一目标?
答案 0 :(得分:3)
我尽量避免在ImageViews上使用wrap_content,因为不同的平台版本会不同地调整图像大小,如果在dp中放置一个明确的宽度和高度,那么选择哪个图像并不重要。
在你的情况下,我会在drawable / xhdpi中有一个图像。在dp中的布局文件中指定它的宽度和高度。对于1920x1200px的图像,即layout_width =“960dp”layout_height =“600dp”
图像与x大型平板电脑的大小平板电脑的物理尺寸大致相同。
如果您希望图像在x-large平板电脑上更大,请添加第二个布局文件,其中图像的宽度和高度会增加但保持相同的图像。
或者,您可以使用大型和x大型之间不同的维度资源。
答案 1 :(得分:3)
我可以针对这个问题提出两种解决方案:
第一个:
ImageView
。第二个(它很难看,但非常快):
只需使用tinypng.com压缩您的png图像。它可以将图像重新调整到70-80%而不会降低质量(适用于移动设备)。
答案 2 :(得分:2)
怎么样:
res/drawable-nodpi
res/layout-xlarge
,res/layout-large
,res/layout
ImageView
上使用此图片时,请勿使用match_parent
或wrap_content
,而是使用dp中的计算尺寸。这应该可行,但是,缺点是它不使用pre-scaling,这意味着在较低的dpi设备上,它将消耗更多的内存。
答案 3 :(得分:1)
如果你想为所有尺寸的设备使用相同的图像,那么我认为你必须使用 9-Patch Images。
Android官方文章click here.
<强>之前:强>
<强>后:强>
请参阅: Android 9 Patch Image Tutorial
希望它有所帮助。
答案 4 :(得分:1)
如果你想为所有尺寸的设备使用相同的图像,那么我认为你应该使用9补丁图片,每个布局包含在android中的线性布局内的重量标签。我认为它的工作是100%的。我确定。因为我使用这种方法进行普遍应用(意味着平板电脑和设备应用程序)
答案 5 :(得分:1)
好的,我得到了你的问题。我的话与此问题相关
有两种方式,我推荐两种方式。
第一种方式(与您当前的问题相关更方便。)
如果尺寸变大,则上传多个apk。
第二种方式我更喜欢这种方式。
创建多个布局。如下所示
res / 布局 /main_activity.xml ---&gt; #对于手机(小于600dp可用宽度)
res / layout-sw600dp /main_activity.xml - &gt;#适用于 7“平板电脑(600dp广泛且更大)
res / layout-sw720dp /main_activity.xml#适用于 10“平板电脑(720dp广泛且更大)
我强烈建议阅读this official doc by google的每个单词。
感谢。