0

我刚刚得到了新的 Nexus 7,它从 drawable-xhdpi 文件夹中提取图像,因为它是 1920x1200。Nexus 10 还从 drawable-xhdpi 文件夹中提取。结果,同样的图像在 Nexus 7 上看起来太大了(确切地说,太大了 150%)。有没有办法指定用于特定设备的资源(可绘制)文件夹?

听起来我不应该尝试覆盖默认的可绘制存储桶,因为屏幕尺寸太多,当我尝试支持更多设备时它可能会阻碍我。那么处理这个问题的最佳方法是什么?下图准确地说明了我的问题。播放按钮从 Nexus 10 缩小到新的 Nexus 7,而留胡子的家伙则放大了,以便在两台设备上保持相同的物理尺寸。我的图像目前正在做有胡子的人图像正在做的事情,但我希望它做播放/连接按钮所做的事情,这在 New Nexus 7 上按比例缩小。(上图 = 新 Nexus 7 下图 = Nexus 10)

新的 Nexus 7

连结 10

4

3 回答 3

2

为了继续使用可绘制资源文件夹,我必须执行以下操作来区分 Nexus 7 2013 和 Nexus 10,因为它们都默认使用 xhdpi 文件夹:

对于 Nexus 7,我最终使用:drawable-sw600dp-xhdpi

对于 Nexus 10,我最终使用了:drawable-sw720dp-xhdpi

我在每个文件夹中有 2 组不同比例的资产。

于 2013-08-05T18:29:47.500 回答
1

您不能为特定设备设置可绘制文件夹,这也是不切实际的,因为那里有太多设备(例如,请参见此处)。

但是,如果您对 android 为每个设备配置选择要使用哪个文件的存储桶的方式不满意,您可以使用自己的算法。在这种情况下,有 2 个选项可以放置文件:

  1. 将图像文件放在 res/drawable-nodpi (或 res/raw) 中。为每个图像添加一个后缀/前缀以显示它用于哪个配置。

  2. 将图像文件放在 assets 中。这是一种更灵活的方法,因为您甚至可以创建子文件夹和您想要的任何文件名。

在这两种方法中,您还应该使用自己的图像采样方法,具体取决于您自己的规则。

于 2013-08-02T23:42:30.920 回答
0

您可以使用以下代码获取大小,然后根据显示器的大小将图像缩放到所需的大小。

    Display display = getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
    int height = display.getHeight();

    DisplayMetrics metrics = new DisplayMetrics();    
    getWindowManager().getDefaultDisplay().getMetrics(metrics);    
    int screenDensity = metrics.densityDpi; 
于 2013-08-02T20:31:22.003 回答