屏幕适配

来源:互联网 发布:xmind7 mac 破解版 编辑:程序博客网 时间:2024/05/21 04:24

Android屏幕几个重要概念

首先,我们先要学习几个重要的概念。
● 什么是屏幕尺寸、屏幕分辨率、屏幕像素密度?
● 什么是dp、dip、dpi、sp、px?他们之间的关系是什么?
● 什么是mdpi、hdpi、xdpi、xxdpi、xxxdpi?如何计算和区分?

屏幕尺寸
屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米
比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等

屏幕分辨率
屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素,如1920*1080。

屏幕像素密度
屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。

单位dp、dip、dpi、sp、px
px我们应该是比较熟悉的,前面的分辨率就是用的像素为单位,大多数情况下,比如UI设计、Android原生API都会以px作为统一的计量单位,像是获取屏幕宽高等。

dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像素,上面我们说过,dpi是屏幕像素密度,假如一英寸里面有160个像素,这个屏幕的像素密度就是160dpi,那么在这种情况下,dp和px如何换算呢?在Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。

假如同样都是画一条320px的线,在480*800分辨率手机上显示为2/3屏幕宽度,在320*480的手机上则占满了全屏,如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半的长度。这也是为什么在Android开发中,写布局的时候要尽量使用dp而不是px的原因。

而sp,即scale-independent pixels,与dp类似,但是可以根据文字大小首选项进行放缩,是设置字体大小的御用单位。

mdpi、hdpi、xdpi、xxdpi、xxxdpi
其实之前还有个ldpi,但是随着移动设备配置的不断升级,这个像素密度的设备已经很罕见了,所在现在适配时不需考虑。
mdpi、hdpi、xdpi、xxdpi用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值。

那么如何区分呢?Google官方指定按照下列标准进行区分:

三、Android屏幕适配

1、线性布局中多使用Weight(可以按照比例对界面进行分配)
2、布局中多使用RelativeLayout进行控件位置限定;
3、使用尺寸限定符,也就是所说的多种layout或者values
例如:默认布局文件是放到res/layout下,可以指定具体尺寸的layout如
res/layout-large;res/layout-xlarge;res/layout-small
还可以进行具体屏幕分辨率和密度进行限定如:

这里写图片描述

4、使用自动拉伸图
支持各种屏幕尺寸通常意味着您的图片资源还必须能适应各种尺寸。例如,无论要应用到什么形状的按钮上,按钮背景都必须能适应。所以使用自动拉伸图更能适合这种情况,并且自动拉伸图占的大小也比正常的png等格式的图小的多;
自动拉伸图通常就是我们所说的 “.9图”; 当然用shape绘制的也可以进行拉伸;

5、文字大小使用非密度制约像素SP,文字大小可以写入到dimen中,方便使用多套values尺寸;

6、图片显示使用ScaleType属性;centerCrop,fitCenter,fitXY

7、AndroidManifest中设置支持各种屏幕密度
supports-screens
android:smallScreens=”true”
android:normalScreens=”true”
android:largeScreens=”true”
android:xlargeScreens=”true”

0 0
原创粉丝点击