Nexus 10 拥有 2500*1600 分辨率,而同一密度系列中的前一个邻居拥有 1024*800 - ** DOUBLE **
我完全关心图像,我已经拥有 x*x px 的图像,如果我在 Nexus 中使用相同的图像 - 它会伸展吗?
如何处理这些类型的决议?
Nexus 10 拥有 2500*1600 分辨率,而同一密度系列中的前一个邻居拥有 1024*800 - ** DOUBLE **
我完全关心图像,我已经拥有 x*x px 的图像,如果我在 Nexus 中使用相同的图像 - 它会伸展吗?
如何处理这些类型的决议?
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
有很多可能的方法来实现这一点,其中一个主要的事情是使用组件大小
width -- dp 中的高度,sp 中的文本大小
其他是您可以使用 layout-ldpi、layout-mdpi、layout-hdpi、layout-xhdpi
dp 和 sp 会解决你的问题
您可以通过代码确定屏幕的大小,然后应用必要的代码。例如,我需要根据不同的屏幕分辨率更改文本大小。
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;
}
根据返回值,我相应地更改文本大小。
阿伦·钱德拉万希
在android中处理多种分辨率:
1) 在 android Application project anatomy 4 文件夹 1) hdpi、mdpi、ldpi 和 xhdpi(在 res 文件夹中)中,您可以将图像放在这里以用于多种屏幕尺寸的设备。系统会根据设备自动从这些文件夹中选择图像。
2) 指定字体大小时使用 sp 而不是 dp。
3) us dp 代替 px。
4)主要是我们线性布局和相对布局而不是其他布局。
5) 使用 9 个补丁图像。
6) 避免使用绝对布局。
7)使用png图像。
8) 横向模式使用 layout-land 文件夹。
谢谢。
该线程中的要点是设计多屏幕布局的通用技巧-
我得到了答案——
我们甚至可以使用drawing-sw1200-xhdpi根据分辨率对drawable进行子分类
问候 SS