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

如何在Android上处理不同的屏幕分辨率?,android,Android,Nexus 10拥有2500*1600分辨率,而同一密度系列中的前一个邻居拥有1024*800-**双分辨率** 我关心的完全是图像,我已经持有x*x px的图像,如果我在Nexus中使用相同的图像-它会拉伸吗 如何处理这些类型的分辨率?有许多可能的方法来实现这一点,其中一个主要的方法是使用组件大小 宽度——以dp为单位的高度, sp中的文本大小 另一个是可以使用布局ldpi、布局mdpi、布局hdpi、布局xhdpi dp和sp将解决您的问题有许多可能的方法来实现这一点,其中一个主要的方法是使

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


我关心的完全是图像,我已经持有x*x px的图像,如果我在Nexus中使用相同的图像-它会拉伸吗


如何处理这些类型的分辨率?

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

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

另一个是可以使用布局ldpi、布局mdpi、布局hdpi、布局xhdpi


dp和sp将解决您的问题

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

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

另一个是可以使用布局ldpi、布局mdpi、布局hdpi、布局xhdpi

dp和sp将解决您的问题

Arun chandravanshi

在android中处理多个分辨率:

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

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

3) 美国dp代替px

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

5) 使用9个补丁图像

6) 避免使用绝对布局

7) 使用png图像

8) 将布局用地文件夹用于横向模式

谢谢。

Arun chandravanshi

在android中处理多个分辨率:

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

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

3) 美国dp代替px

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

5) 使用9个补丁图像

6) 避免使用绝对布局

7) 使用png图像

8) 将布局用地文件夹用于横向模式

谢谢。

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

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;       
}
例如,如果您想要超大屏幕的替代布局,则需要将替代布局放置在layout xlarge中。一般规则是资源\名称限定符。您可以在android指南中找到支持多种分辨率和屏幕大小的选项:

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

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

例如,如果您想要超大屏幕的替代布局,则需要将替代布局放置在layout xlarge中。一般规则是资源\名称限定符。您可以在android指南中找到支持多分辨率和屏幕大小的选项:

此线程中的要点是设计多屏幕布局的一般提示-

我得到了答案-

我们甚至可以使用drawing-sw1200-xhdpi根据分辨率对可绘制图像进行细分

问候
SS

此线程中的要点是设计多屏幕布局的一般提示-

我得到了答案-

我们甚至可以使用drawing-sw1200-xhdpi根据分辨率对可绘制图像进行细分

问候
SS

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

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

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

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

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

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

我的关注点完全在图像上,我已经持有x*x px的图像,如果我在Nexus中使用相同的图像-它会拉伸?永远不要在px中使用图像大小始终在DPI中设置其属性我的关注点完全在图像上,我已经持有x*x px的图像,如果我在Nexus中使用相同的图像-它会拉伸?永远不要在px中使用图像大小始终在DPM中设置其属性我关心的是完全在图像上,我已经保存了x*x px的图像,如果我在Nexus中使用相同的图像-它会拉伸?你可以在宽度和高度上使用wrap_内容,使用相对布局并在父级上保持imageview对齐(相对布局),可以在父对象中对齐中心、左、右。试一下我的关注点完全是图像,我已经持有x*x px的图像,如果我在Nexus中使用相同的图像-它会拉伸?你可以在宽度和高度上使用wrap_内容,使用相对布局并使你的imageview在父级上对齐(相对布局),你可以在父级上对齐中心、左侧和右侧。试一下