如何在Android上处理不同的屏幕分辨率?

时间:2012-11-07 11:13:06

标签: android

Nexus 10拥有2500 * 1600分辨率,而同一密度系列中的前一个邻居拥有1024 * 800 - ** DOUBLE **

我完全关注图像,我已经拥有x * x px的图像,如果我在Nexus中使用相同的图像 - 它会延伸吗?

如何处理这些类型的决议?

5 个答案:

答案 0 :(得分:1)

有许多可能的方法来实现这一点,主要的是使用组件大小

宽度 - 以dp为单位的高度, sp中的文本大小

其他是你可以使用layout-ldpi,layout-mdpi,layout-hdpi,layout-xhdpi

dp和sp将解决您的问题

答案 1 :(得分:1)

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

根据屏幕分辨率,您应该有其他资源。

例如,如果您想要超大屏幕的替代布局,则需要在layout-xlarge中放置替代布局。一般规则是resources_name-qualifier。您可以在Android指南中找到有关支持多种分辨率和屏幕尺寸的选项:http://developer.android.com/guide/practices/screens_support.html

答案 2 :(得分:0)

Arun chandravanshi

在android中处理多个分辨率:

1)在Android应用程序项目解剖4文件夹1)hdpi,mdpi,ldpi和xhdpi(在res文件夹中),您可以将图像放在这里用于多个屏幕尺寸的设备。系统会根据设备自动从这些文件夹中选择图像。

2)在给出字体大小时使用sp而不是dp。

3)us dp代替px。

4)主要是线性布局和相对布局而不是其他布局。

5)使用9张补丁图片。

6)避免使用绝对布局。

7)使用png图像。

8)使用layout-land文件夹进行横向模式。

感谢。

答案 3 :(得分:0)

您可以按代码确定屏幕大小,然后应用必要的代码。例如,我需要根据不同的屏幕分辨率更改文本大小。

public void setMainButtonTextSize(){
    if (isXLargeScreen()){
        mainButtonTextSize = 38;
        mainButtonDownTextSize = 32;
        titleTopButtonTextSize = 80;
        titleBottomButtonTextSize = 60;
        timeTextSize = 36;
        dayTextSize = 26;
        dateTextSize = 36;

    } else if (isLargeScreen()){
        mainButtonTextSize = 28;
        mainButtonDownTextSize = 22;
        titleTopButtonTextSize = 70;
        titleBottomButtonTextSize = 50;
        timeTextSize = 26;
        dayTextSize = 16;
        dateTextSize = 26;
    } else if (isNormalScreen()){
        mainButtonTextSize = 18;
        mainButtonDownTextSize = 14;
        titleTopButtonTextSize = 40;    
        titleBottomButtonTextSize = 30;
        timeTextSize = 16;
        dayTextSize = 12;
        dateTextSize = 16;
    }  else if (isSmallScreen()){
        mainButtonTextSize = 12;
        mainButtonDownTextSize = 10;
        titleTopButtonTextSize = 30;
        titleBottomButtonTextSize = 20;
        timeTextSize = 12;
        dayTextSize = 8;
        dateTextSize = 12;
    }
} 


public Boolean isLargeScreen(){
    if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
        return true;
    } else 
        return false;       
}

public Boolean isNormalScreen(){
    if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
        return true;
    } else 
        return false;       
}

public Boolean isSmallScreen(){
    if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
        return true;
    } else 
        return false;       
}

public Boolean isXLargeScreen(){
    if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
        return true;
    } else 
        return false;       
}

取决于返回值,我相应地更改文本大小。

答案 4 :(得分:-1)

此主题中的要点是为多个屏幕设计布局的一般提示 -

我得到了答案 -

我们甚至可以使用drawing-sw1200-xhdpi

对分辨率进行分类,具体取决于分辨率

此致 SS