屏幕适配的相关概念:
1.什么是屏幕尺寸,屏幕尺寸分辨率,屏幕像素密度
屏幕尺寸指屏幕的对角线的长度,单位:英寸 1英寸=2.54厘米
屏幕分辨率是指横向和纵向上的像素点数,单位是px,1px = 1个像素点, 一般以纵向像素横向像素 如:19801080
屏幕像素密度是指每英寸上的像素点数,单位是dpi,即dot per inch 的缩写
屏幕像素密度与屏幕尺寸和屏幕分辨率有关
密度计算:例如:sqrt(1080^2 + 1980^2)/屏幕尺寸
2.什么是dp,dip,sp,px?他们之间的关系?
dpi,dip:desity independent pixels的缩写,即密度无关像素以160dpi为基准,1dip = 1px 或者 1dp = 1px
sp:Scale-independent pixels:可以根据文字大小首选项进行缩放 google推荐使用偶数。
3.mdpi,hdpi, xdpi,xxdpi,xxxdpi 如何计算如何区分
名称 | 像素密度范围 |
---|---|
mdpi | 120dpi-160dpi |
hdpi | 160dpi-240dpi |
xdpi | 240dpi-320dpi |
xxdpi | 320dpi-480dpi |
xxxdpi | 480dpi-640dpi |
解决方案
1.支持各种屏幕尺寸
-使用wrap_content, match_parent,
其中weight 只能使用LinearLayout,而且是先计算控件内容高度,然后将剩余的部分按照weight平分,然后控件的高度 = 控件内容高度+剩余高度*weight/weight总和
-使用RelativeLayout
-使用自动拉伸位图 .9图
其中 左上两边表示可拉伸区 右下两边表示显示内容的区域(在手机上主要是文字区域)
-使用限定符
其中使用最小宽度限定符
sw small Width(设备上最小的一条边)
res/layout-sw600dp/???.xml 7寸屏
res/layout-sw720dp/???.xml 10寸屏
-使用布局别名
<resources>
<item name = "main" type="layout">@layout/main</item>
</resources>
<resources>
<item name = "main" type="layout">@layout/main_towpage</item>
</resources>
activity中布局的设置
setContentView(R.layout.main)
-使用屏幕方向限定符
其中水平方向:res/values-sw600dp-land/layout.xml
<resources>
item name = "main" type="layout">@layout/main_towpanes</item>
</resources>
垂直方向:res/values-sw600dp-port/layout.xml
<resources>
item name = "main" type="layout">@layout/main</item>
</resources>