UI适配方案
Android的ui适配一般有两种解决方案,一种是通过系统的资源适配机制(layout和drawable),另一种是通过代码来适配(fragment和view),两种方案也经常结合起来用。
1 资源适配
Android的资源适配机制的原理就是在一个app工程中为不同分辨率,不同尺寸和不同方向的屏幕准备相对应的layout文件和图片,在运行时系统会自动找到相应的文件,而要使系统正确地找到最优的资源文件,开发者必须遵守android的资源适配规则。
1.1 需掌握的概念
1.11 Screen size(屏幕尺寸)
android定义了small,
normal, large, xlarge四种尺寸,其中normal是以G1
3.5寸的屏幕为基准,一种尺寸标准一般对应一个范围的屏幕大小,具体如下:
Android 3.2(level
13)之后,新加入了最小dp的概念,有swdp,wdp,hdp,n代表最小的数值,其中wdp指屏幕宽度>=ndp,hdp指屏幕高度>=ndp,swdp指高度和宽度都要>=ndp,比如w600dp意味着当运行在宽度>=600dp的屏幕上时才会加载此级别的资源文件。
1.12 Orientation(屏幕方向)
Android定义了port(横向),land(纵向)两种方向,如果应用支持app横向模式,一般都会针对layout提供一个land方向的资源文件,以对layout重新布局。
1.13 Density-independent pixel (dp)
dp是用来衡量密度和像素之间关系的单位,以mdpi(160dpi)为基准,1dp=1px,其他按比例变化,比如hdpi(240dpi)中,1dp=1.5px。dp主要用来设置view的大小,如果用px来设置view的大小,在相同大小的屏幕上,高分辨率的屏幕下view的物理大小会变小(因为一个像素的物理大小变小了),而如果使用dp,比如高度为100dp,则view的大小几乎没有变化(因为虽然一个像素变小了,但在高分辨率的屏幕上,100dp>100px,最终像素数量变多了,物理大小=像素大小*像素数量,相互抵消后,view的物理大小几乎不变),也就是说,只要我们使用dp,然后在mdpi的基准下调整一个最佳的数值,在所有设备上都可以呈现相同的物理大小。
1.14 Scale-independent pixel (sp)
sp的原理和dp类似,使用在字体大小的设