1.什么事屏幕适配尺寸、屏幕分辨率、屏幕像素密度?
屏幕尺寸是指屏幕对角线的长度。单位是英寸,1英寸=2.54cm
屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1像素点,一般是纵向像素横向像素,如1280×720;
屏幕的分辨率是指屏幕没英寸的像素点数,单位是dpi,即“dot per inch”的缩写,像素密度和屏幕尺寸和屏幕分辨率有关。
2.什么事dp、dip、dpi、sp、px?之间的关系是什么?
dip:Density Independent Pixels(密度无关像素)的缩写。以160dpi为基准,1dp=1px
,常见的有160dpi、240dpi、320dpi
dp:同dip
dpi:屏幕像素密度的单位,“dot
per inch”的缩写
px:像素,物理上的绝对单位
sp:Scale-Independent
Pixels的缩写,可以根据文字大小首选项自动进行缩放。Google推荐我们使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,最好不要使用奇数和小数。
3.什么是mdpi、hdpi、xdpi、xxdpi、xxxdpi?怎么区分?
在Google官方开发文档中,说明了 mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 的尺寸比例进行缩放。例如,一个图标的大小为48×48dp,表示在mdpi上,实际大小为48×48px,在hdpi像素密度上,实际尺寸为mdpi上的1.5倍,即72×72px,以此类推。
4.文字和尺寸的适配。
可以在工程下创建不同的values文件夹:values-sw480dp, values-sw600dp, values-sw720dp-land等。比如一个控件的宽度,在10寸pad上是10dp,在8寸pad上是5dp。这时,你可以定义一个变量,button_width,然后在values-sw600dp下写5dp,在values-sw720-land下写10dp。这样就达到了在不同尺寸pad上,相应控件大小不一样的效果。(1)多使用权重(android:layout_weight)尤其是在tab切换布局,listview title及Item布局等情况下;
(2)设置宽度和高度时,尽量使用match_parent和wrap_content,避免把控件宽高设死;
(3)父容器布局选用多使用RelativeLayout,FrameLayout,GridLayout等,减少布局层次。当然,在使用权重时,得采用LinearLayout;
(4) 在xml里,设置高度、宽度采用dp(dip),设置字体采用sp。(应该注意,在代码里面,我们写的setHeight(...)单位是px)
(5)图片适配时尽量使用SVG图片