繁体   English   中英

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

[英]How to handle different screen resolutions on Android?

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

我的担心完全在图像上,我已经保存了x * x px的图像,如果我在Nexus中使用相同的图像-它会拉伸吗?

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

有很多可能的方法来实现这一目标,其中之一就是使用组件大小

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

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

dp和sp将解决您的问题

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

阿伦·钱德拉万史

在android中处理多种分辨率:

1)在android Application project anatomy 4文件夹中1)hdpi,mdpi,ldpi和xhdpi(在res文件夹中),您可以将图像放置在此处以用于多个屏幕尺寸的设备。 系统会根据设备自动从这些文件夹中选择图像。

2)指定字体大小时,请使用sp而不是dp。

3)我们用dp代替px。

4)通常我们使用线性布局和相对布局,而不是其他布局。

5)使用9个补丁图像。

6)避免使用绝对布局。

7)使用png图片。

8)将layout-land文件夹用于横向模式。

谢谢。

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

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;       
}

根据返回值,我相应地更改文本大小。

该主题中的要点是设计多屏布局的通用提示,

我得到了答案-

我们甚至可以使用drawing-sw1200-xhdpi根据分辨率对可绘制对象进行分类。

关于SS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM