android - 强制平板电脑使用 xhdpi 资源

标签 android xml

我正在开发一个应用程序,我已经提供了从 ldpi 到 xhdpi 的所有资源,但是有些平板电脑使用 hdpi(或者 tvdpi,对于我正在测试的 nexus 7)所以当我打开应用程序时在平板电脑上一切都很小,我想强制他们使用 xhdpi 资源,我该怎么做?

我不想只为平板电脑创建单独的文件,否则应用程序的大小会增加,xhdpi 资源可以正常工作

enter image description here

在手机上一切都正常显示,平板电脑是个问题,因为它们的大屏幕采用小分辨率 Assets ,所以以英寸为单位的实际尺寸(4 厘米,用尺子测量)是正确的,但它们实际上看起来很小整体设计不正确

最佳答案

通常,缩小比例是最好的选择(相对于放大)。 如果您的图像在缩小时没有降级或丢失信息,请将图像的 2x 版本放在 res/drawable-xhdpi 文件夹中。 Android 会在密度较低的设备上适当缩小这些图像。

例如如果你在 res/drawable-xhdpi 中放置一个 64x64 像素的 jpg/png,Android 将在 mdpi 设备上显示为 32x32 像素,在 hdpi 设备上显示为 48x48 像素图像,在 hdpi 设备上显示为 64x64 像素图像xhdpi 设备。

如果缩小图像会使图像质量下降(例如,图像中有 1 像素线,缩小时会消失),那么唯一的选择是在 drawable-mdpi、drawable-hdpi 中添加图像的变化等目录。

评论后更新:

您希望您的图像在较大 屏幕上显示得更大(而不是在更高密度 屏幕上)。您可以通过仅将图像放在 drawable-xhdpi 文件夹中来执行此操作,但然后执行此操作:

例如您将在 res/layout 中拥有此布局,其中的 ImageView 显示您的其中一张图片:

res/drawable-xhdpi/one_of_my_images.png

res/layout/somelayout.xml

....
<ImageView 
    android:layout_height="@dimen/image_height"
    android:layout_width="@dimen/image_width"
    android:src="@drawable/one_of_my_images"
    android:scaleType="fitCenter"
    ....
    />

res/values/dimens.xml

....
<dimen name="image_height">100dip</dimen>
<dimen name="image_width">150dip</dimen>
....

res/values-large/dimens.xml

....
<dimen name="image_height">150dip</dimen>
<dimen name="image_width">225dip</dimen>
....

res/values-xlarge/dimens.xml

....
<dimen name="image_height">200dip</dimen>
<dimen name="image_width">300dip</dimen>
....

如您所见,屏幕越大,图像越大(倾角,因此以英寸为单位)。 您可以在 res/values-xlarge-hdpi、res/values-xlarge-xhdpi 等 dimens.xml 中尝试不同的 image_height 和 image_width 值,看看什么看起来最好。

评论后更新 2: 如果你想要你自己的加载适当资源的“自定义”方案,请将它们放在 id res/drawable-nodpi 中: 例如
res/drawable-nodpi/one_of_my_images_normal.png res/drawable-nodpi/one_of_my_images_large.png res/drawable-nodpi/one_of_my_images_xlarge.png

然后放入适当的 drawable 目录(res/drawable/、res/drawable-large、/res/drawable-sw360dp/等,无论你能想出什么)一个 xml 文件,它间接引用来自nodpi目录:例如

res/drawable-xlarge-mdpi/my_images.xml

<resources>
    ....
    <item type="drawable" name="one_of_my_images">@drawable/one_of_my_images_large</item>
    ....
</resources>

这意味着对于超大 mdpi 屏幕,Android 将从 drawable-nodpi 目录加载“one_of_my_image_large.png”。

关于android - 强制平板电脑使用 xhdpi 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075541/

相关文章:

java - 使用ANTLR进行多重解析

java - 使用 Java 读取单个 XML 行

android - 填写android中的所有字段后启用提交按钮?

android - 如何将图像保存到数据库中

c# - 在 C# 中使用 Linq 从 XML 获取属性和属性

java - 在保留 xsi :type 的同时合并文档

java - R.java不生成

java - 来自 java 的 asp.NET 帖子

android - Kotlin 中的 Intent 服务

android - 通过编码得到数据分区的大小