周记:适配心得

来源:互联网 发布:社交网络电影百度网盘 编辑:程序博客网 时间:2024/06/04 23:23


废话那么多:一个百分比的库就OK了,


前言:

1、dpi(dot per inch),即每英寸像素,所有的android设备都会被分成120(low),160(medium),240(high),320(xhigh)四种,后来随着市场上android设备越来越多,google官方又增加了213(Added in API level13),480(Added in API level16),640(Added in API level18),三种dpi。比如320*240分辨率的屏幕物理尺寸2英寸*1.5英寸,dpi=160;

 2、dp或dip(density-independentpixel)逻辑密度计算单位,与像素的换算方式为px=dp*(dpi/160)。

 

适配

定义:通过代码或图片尺寸裁剪,适配不同手机的界面

 

代码适配:

定义:通过代码动态设定该view的坐标。

方法:按照一个分辨率先做出一套适配该分辨率的布局,在另外的分辨率上按照之前适配好那一套布局的分辨率与当前需适配的分辨率进行比例计算,然后在动态设定坐标的地方按照计算好的比例动态设定坐标位置。

优点:适合自定义的view设置大小和显示位置时使用,减少vlaues的使用。

缺点:类的代码会稍多一些,前期坐标比例的计算需控制。

 

values适配:

定义:通过dimens文件,来适配不同的手机界面。

方法:在项目res包下创建values-mdpi-1280x720(适配mdpi分辨率下的1280x720的手机界面)或values-hdpi(适配hdpi的所有界面),还有另外3.2以后,为了提供更精准的对布局文件的控制写法:

第一种后缀:sw<N>dp,如layout-sw600dp, values-sw600dp这里的sw代表smallwidth的意思,当你所有屏幕的最小宽度都大于600dp时,屏幕就会自动到带sw600dp后缀的资源文件里去寻找相关资源文件,这里的最小宽度是指屏幕宽高的较小值,每个屏幕都是固定的,不会随着屏幕横向纵向改变而改变。
    第二种后缀w<N>dp如layout-w600dp, values-w600dp带这样后缀的资源文件的资源文件制定了屏幕宽度的大于Ndp的情况下使用该资源文件,但它和sw<N>dp不同的是,当屏幕横向纵向切换时,屏幕的宽度是变化的,以变化后的宽度来与N相比,看是否使用此资源文件下的资源。
    第三种后缀h<N>dp如layout-h600dp, values-h600dp这个后缀的使用方式和w<N>dp一样,随着屏幕横纵向的变化,屏幕高度也会变化,根据变化后的高度值来判断是否使用h<N>dp ,但这种方式很少使用,因为屏幕在纵向上通常能够滚动导致长度变化,不像宽度那样基本固定,因为这个方法灵活性不是很好,google官方文档建议尽量少使用这种方式。

每个values包里会有一个dimens文件,该文件里定义不同尺寸,如果values-xhdpi-1280x720,那么该包里的dimens文件所定义的尺寸就是符合1280x720的界面的数据。

当前分辨会首先选择当前已经创建的values文件,如果没有当前分辨率对应的values包,那么程序就会去查找跟当前分辨率最接近,但是又小于当前分辨的values,如果还未找到,那程序就执行原本values包里的dimens文件。所以要保证最小分辨率得values包,适配时匹配过程都是向下匹配。

    优点:通过dimens设置尺寸,能精确控制其在不同界面的尺寸大小。

    缺点:工作量较大,代码量较多,需添加较多的values文件,如其中某一个values里的dimens中的参数与其他的dimens中参数有出入,如少了一条参数,就会出现异常。因此在增删时需格外注意,原本的values包里也必须有dimens文件。

 

    图片剪裁适配:

    定义:通过控制图片尺寸来适配不同界面。

    方法:通过剪裁适应不同分辨率得图片,放入到drawable不同的包里,程序会根据当前分辨率自动选择适合自己的drawable包,使用里边的图片。

    优点:程序自动选择适合图片,减少前台开发的工作量。

    缺点:图片过多,项目包也会对应增大。

 

平板适配:

       通过land,port来区别是横竖的哪种状态,然后通过values-land-hdpi-2220x1280来进行适配

 

同时在布局时也可通过线性布局达到一些适配的效果,界面内容过长可增加滚动条进行展示。

    适配一直是前端开发比较头疼的问题,适配的方法也是多种多样,争取能找到效率最高,代码量最少,适配更完善的操作方式。

0 0