如何为多个分辨率的Android应用程序设置drawable?

时间:2012-06-18 13:56:29

标签: android drawable

我正在开发具有大量图像的Android应用程序。这是一个韩国应用程序。 我想支持最大可能的分辨率。 所以我创建了4个不同的文件夹(ldpi,mdpi,hdpi,xhdpi),用于google doc所说的drawable。 现在我的问题是我的应用程序完全适用于所有设备,但在韩国有设备Pantech Vega LTE M这给了很多麻烦

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

所以我没有得到如何为这个设备设置drawables。我是否需要添加单独的drawable文件夹以匹配此分辨率。

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

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

2 个答案:

答案 0 :(得分:1)

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

修改 看起来自API级别9以来支持xhdpi,并且设备的配置规格看起来像普通的 - 大屏幕,带有xhdpi。因此,我能想到的唯一解决方法是在drawable中创建这些文件夹。

答案 1 :(得分: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();     }