屏幕适配

Android 屏幕适配:最全面的解决方案
Android开发:最全面、最易懂的Android屏幕适配解决方案

切图问题

UI切的是ios的,在做一些特殊的背景时,宽是750,而我们的经常以720为准,这样圆容易变形。因此切成宽为720的为好

dp和sp在部分机型上的不匹配解决办法

在android内部会使用TypedValue.applyDimension函数将所有单位换算成px

观察dip和sp的换算,主要就是density和scaledDensity的区别,

public static float applyDimension(int unit, float value, DisplayMetrics metrics) 
{ 
switch (unit) { 
case COMPLEX_UNIT_PX: 
return value; 
case COMPLEX_UNIT_DIP: 
return value * metrics.density; 
case COMPLEX_UNIT_SP: 
return value * metrics.scaledDensity; 
case COMPLEX_UNIT_PT: 
return value * metrics.xdpi * (1.0f/72); 
case COMPLEX_UNIT_IN: 
return value * metrics.xdpi; 
case COMPLEX_UNIT_MM: 
return value * metrics.xdpi * (1.0f/25.4f); 
} 
return 0; 
} 

dp和sp的区别在于density和scaledDensity两个值上;
变量density
float类型,display的logic-density。是一个scaling-factor,

Density-independent pixel (dp)独立像素密度。标准是160dip.即1dp对应1个pixel,计算公式如:px = dp * (dpi / 160),屏幕密度越大,1dp对应 的像素点越多。
上面的公式中有个dpi,dpi为DPI是Dots Per Inch(每英寸所打印的点数),也就是当设备的dpi为160的时候1px=1dp
160dpi的screen提供系统display的baseline
160dpi的screen-density值为1(160/160)
120dpi的screen-density值为0.75(120/160)
screen-1,已知240x320,1.5”x2” ,可以计算出densityDpi等于160。即240/1.5=160,或320/2=160。再通过densityDpi/160计算出density的值1.0。
screen-2,已知320x480,1.5”x2”,可以计算出densityDpi等于240。即320/1.5=240,或480/2=240。再通过densityDpi/160计算出density的值1.5。
关于scaledDensity **
float类型,一个scaling-factor,用于fonts显示,同density相同的值,除非由于
基于font-size上的体验需要做微调**。
TyuMainApp.getApp().getResources().getDisplayMetrics()对象中的属性值
*总结一下: **
dp只跟屏幕的像素密度有关;
sp和dp很类似但唯一的区别是,android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。

先打框框,慢慢完善

http://blog.csdn.net/u010181592/article/details/50012397
http://blog.csdn.net/lmj623565791/article/details/49990941
http://blog.csdn.net/u010181592/article/details/50012397
http://blog.csdn.net/lmj623565791/article/details/45460089

你可能感兴趣的:(屏幕适配)