我有一个应用程序在TextView中将位图显示为“drawableTop”:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_weight="1"
android:drawableTop="@drawable/bitmap"
android:gravity="center"
android:text="@string/text" />
位图来自res / drawable文件夹中的PNG文件,我们称之为bitmap.png。
我需要支持多种屏幕尺寸和密度,并希望找到最便宜的方式(根据我需要在res / *文件夹中包含多少PNG文件)。
各种密度:仅限手机
我得出的结论是,在res / drawable-xhdpi文件夹中使用bitmap.png已经足够了。当在高密度手机上显示时,它将按原样显示,而在手机上将降低密度,它将自动缩小。 换句话说,不需要在res / drawable-hdpi,res / drawable-mdpi等中使用bitmap.png的低分辨率版本。 基本上只有一个版本的PNG文件就足够了所有手机。
各种密度:平板电脑
现在,如果我想支持平板电脑,那就会出现问题:大屏幕和xlarge屏幕。 在平板电脑上,我希望图标的宽高比与手机上的宽高比相同:如果位图占据手机屏幕的1/4,我希望它占据平板电脑屏幕的1/4。我不能像以前那样重复使用相同的PNG文件,或者看起来太小,因为平板电脑只有更多的像素...所以对于平板电脑我需要更高的分辨率PNG。这适用于大屏幕和xlarge屏幕。
这导致需要3个文件夹和3个版本的PNG:
1:res / drawable-xhdpi / bitmap.png
2:res / drawable-large-xhdpi / bitmap.png
3:res / drawable-xlarge-xhdpi / bitmap.png
但是1和2基本上是3的低分辨率版本。
那么有一个简单的方法可以让一个文件夹不是3吗?
答案 0 :(得分:0)
如果你想为所有分辨率只保留一个图像,为什么不保留res / drawable和res / drawable-land文件夹?
答案 1 :(得分:0)
如果您正在谈论最便宜的方式(不在drawable中添加多个图像),请使用 9-Patch Images 。如果你不知道它,那么看看我在这里学习用法:
http://www.androiddom.com/2011/05/android-9-patch-image-tutorial.html
http://www.androiddom.com/2011/05/creating-custom-drawn-button.html
答案 2 :(得分:0)
从您的问题来看,您不需要针对平板电脑或手机使用不同的定向图像。 如果您希望图像在两个设备上都采用1/4大小,则使用d(i)p在xml中定义图像。这将在所有设备上将图像缩放到相同的大小。
d(i)p相对于640x480(或纵向方向的480x640分辨率)进行缩放。 因此,您可以计算出不同的分辨率组合,以覆盖1/4的屏幕空间,例如320x240或240x320
如果您想控制图像的缩放,我建议将图像放在ImageView中。这将允许您使用 android:scaleType 属性来缩放图像的方式。
您可以将TextView的背景设置为透明,并将其下方的ImageView包含在所需大小的relativeLayout中,以达到与当前相同的效果,如下所示:
<RelativeLayout
android:layout_width="320dp"
android:layout_height="240dp"
>
<!-- Images at the top of the xml are drawn on the bottom! -->
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/bitmap"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/text"
/>
</RelativeLayout>
另请考虑使用alias resources。
这将允许您定义一个xml文件,该文件就像它是真正的PNG图像一样(并且在R.drawable中被引用,但实际上是对另一个图像的引用。
来自关联的Google文档:
要为现有drawable创建别名,请使用该元素。 例如:
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/icon_ca" />
如果将此文件另存为icon.xml(在备用资源中) 目录,如res / drawable-en-rCA /),它被编译成一个 您可以引用为R.drawable.icon的资源,但实际上是一个 R.drawable.icon_ca资源的别名(保存在 RES /抽拉/).