简介
由于Android系统的开放性,因此任何用户、开发者、OEM厂商、运营商都可以对它进行定制,修改成他们想要的样子。
下面这张图是Android屏幕尺寸的示意图,在此图中蓝色矩形的大小代表不同尺寸,颜色深浅代表所占百分比的大小。
从上图可以看出Android的屏幕尺寸特别多,为了让我们开发的应用程序能够比较美观的显示在不同尺寸、分辨率、像素密度的设备上,那就需要在开发过程中进行相应处理。
详细的统计数据请到这里查看。
不同分辨率密度之间的关系:
Android中的mdpi、hdpi、xdpi、xxdpi、xxxdpi用来修饰drawable及values文件夹,区分不同像素密度下的图片和dimen值。
Google官方指定按照下列标准进行区分:
开发过程中需要将合适大小的图片放在合适的文件夹下面。
设计图标时需对五种主流的像素密度(mdpi、hdpi、xdpi、xxdpi、xxxdpi)按照2:3:4:6:8的比例进行缩放。比如一个启动图标的尺寸为48x48dp,这表示在mdpi的屏幕上其实际尺寸应为48x48px,在hdpi的屏幕上其实际大小是mdpi的1.5倍即为72x72px,在xdpi的屏幕上其实际大小是mdpi的2倍即为96x96px依此类推。虽然Android平台也支持低像素密度ldpi的屏幕,但随着移动设备配置的不断升级此像素密度的设备已经很少见了,而且对于此类屏幕的手机系统会自动将mdpi尺寸的图标缩小进行匹配。
下图是图标在各个屏幕密度下的对应尺寸大小:
解决方案
一、布局自适应屏幕
使用wrap_content、match_parent、weight属性来设置某些视图组件的宽度和高度。
使用“wrap_content”系统就会将相应视图的宽度或高度设置成刚好能够包含视图中内容的最小尺寸,而使用“match_parent”(低于Android API 8的级别中为“fill_parent”)则会让视图的宽和高延伸至充满整个父布局,weight是线性布局的一个独特属性,使用它可以按照比例对界面进行权重的分配,完成一些特殊的需求。
使用RelativeLayout相对布局。
开发过程中各种布局的特点不一样,我们应该选择不同的布局以完成最优化的布局需求。对于一些相对位置固定或者不是一条直线排列的布局来说我们可以使用RelativeLayout相对布局
二、根据屏幕配置来加载合适的UI布局
使用尺寸(Size)限定符
现在有很多大屏的设备,我们的应用程序为了更好的适配这些屏幕提升用户体验,往往会根据屏幕的大小来实现不同的布局,为了适配不同的屏幕我们应该杂么做呢?Android中提供了限定符来满足我们