0

我正在开发具有大量图像的 android 应用程序。这是一个韩国应用程序。我想支持尽可能多的分辨率。所以我创建了 4 个不同的文件夹(ldpi、mdpi、hdpi、xhdpi)作为可绘制的 google doc 所述。现在我的问题是我的应用程序可以在所有大多数设备上完美运行,但是在韩国有设备Pantech Vega LTE M,这给了很多麻烦

它的分辨率属于 xhdpi 类别,但仍然在此设备中,我的应用程序显示来自 mdpi 的图像,并且显示的图像比它的分辨率大。所以一半的图像被压缩显示。

所以我不知道如何为此设备设置可绘制对象。我是否需要添加单独的可绘制文件夹以匹配此分辨率。

如果我更改 mdpi 文件夹中的图像,则会为其他分辨率带来问题。

除了我需要添加多少文件夹之外,我的应用程序还与所有可能的可用分辨率兼容。

4

2 回答 2

1

那是因为该设备运行 Android 2.3 Gingerbread,其中不支持X-Large 配置,因为从 Adroid 3.0 afaik 开始支持该分辨率。

编辑: 看起来 xhdpi 从 API 级别 9 开始就受到支持,并且您设备的配置规范看起来像一个普通的带有 xhdpi 的大屏幕。所以我能想到的唯一解决方法是在你的drawables中创建这些文件夹。

于 2012-06-18T14:10:11.790 回答
0

嗨,您创建了可绘制文件夹,例如 drawable-large-mdpi

  1. 检查您的设备属于哪个类别 large , xlarge 并相应地创建文件夹。
  2. 发布您的屏幕分辨率以调查问题。
  3. 检查此代码以获取有关您设备的确切信息

    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    
    switch(metrics.densityDpi)
    {      
    
        case DisplayMetrics.DENSITY_LOW:                 
        Toast.makeText(this,"low density " + String.valueOf(metrics.densityDpi),Toast.LENGTH_SHORT ).show();
        break;      
        case DisplayMetrics.DENSITY_MEDIUM:                  
        Toast.makeText(this,"medium density " + String.valueOf(metrics.densityDpi),Toast.LENGTH_SHORT ).show(); 
        break;      
        case DisplayMetrics.DENSITY_HIGH:
        Toast.makeText(this,"high density " + String.valueOf(metrics.densityDpi),Toast.LENGTH_SHORT ).show();           
        break; 
    }
    
    
    if ((getResources().getConfiguration().screenLayout &  Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) 
    {              Toast.makeText(this, "Large screen",Toast.LENGTH_SHORT).show();      }    
    else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) 
    {              Toast.makeText(this, "Normal sized screen" , Toast.LENGTH_SHORT).show();      }      
    else if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) 
    {              Toast.makeText(this, "Small sized screen" , Toast.LENGTH_SHORT).show();     }     
    else {         Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();     } 
    
于 2012-06-18T14:33:13.880 回答