Android UI绘制 -- 屏幕适配

#重要概念

屏幕尺寸

手机对角线的物理尺寸,单位英寸。
常见的有:5寸、5.5寸、6寸等

屏幕分辨率

手机在横向、纵向上的像素点数总和,单位px。
常见的有:1080x1980、720x1280/480x800等

屏幕像素密度

每英寸的像素点数,单位dpi。

密度类型代表分辨率(px)屏幕像素密度(dpi)
低密度(ldpi)240x320120
中密度(mdpi)320x480160
高密度(hdpi)480x800240
超高密度(xhdpi)720x1280320
超超高密度(xxhdpi)1080x1920480

密度无关像素

Android特有的单位,与终端上的实际物理像素点无关。单位dp。

密度类型代表分辨率(px)屏幕密度(dpi)换算(px/dp)比例
低密度(ldpi)240x3201201dp=0.75px3
中密度(mdpi)320x4801601dp=1px4
高密度(hdpi)480x8002401dp=1.5px6
超高密度(xhdpi)720x12803201dp=2px8
超超高密度(xxhdpi)1080x19204801dp=3px12

独立比例像素

Android特有的单位,可根据字体大小首选项进行缩放

dp适配方案

我们以设计图为720x1280分辨率为例(有的公司设计直接给的iPhone 6 750x1344,可近视为等同)。
在这里插入图片描述
如上图,720px的设计图,dp = px/2,也就是说;如果你测量到UI设计图上的距离是100px,那么你代码里应该写dp_50。
PS:这里推荐一个小工具,PxCook。可以根据设计的psd图做测量,Android、IOS都可以,而且会根据设计图的分辨率自动转换(就是说 你把720x1280的设计图丢进去,100px的距离测量出来就是50dp了哦)。
第一步:综上,代码里的距离要写对,一般以720x1280为基准,当然也可以根据公司情况调整
第二步:在根据基准分辨率在values/dimens.xml中编写一套我们常用的dimens.xml(个别特殊需求可以再加)。
在这里插入图片描述
第三步:根据这个基准,制作出不同宽度的dimens.xml
PS:这里有个AS小插件介绍下,ScreenMatch。在Setting - Plugs里下载,可以在screenMatch.properties中进行配置,base_dp=360 配置基准的dp,默认的360就是720x1280了。然后在module中右键 - ScreenMatch即可自动生成其他不同宽度的dimens.xml
在这里插入图片描述

手机 平板 适配方案

Android 3.2 之后引入最小宽度限定符,可以用来做不同的手机 平板做适配。

//默认
res/layout/main.xml
//适配宽度大于600dp的屏幕(大概7寸的平板)
res/layout-sw600dp/main.xml

屏幕方向限定符,可以从来做不同手机 平板横竖屏时的布局匹配(结合最小宽度限定符)

//默认
res/values/layouts.xml
//宽度大于600dp,横屏
res/values-sw600dp-land/layouts.xml
//宽度大于600dp,竖屏
res/values-sw600dp-port/layouts.xml

PS:最小宽度限定只能在Android3.2之后的版本使用,可以准确的为多种宽度的屏幕做适配。在Android3.2之前只有large来统一适配大于600dp的大屏手机或平板

适配细节

  • 禁用绝对布局AbsoluteLayout
  • mipmap相对drawable加载性能会更好些
  • 合理利用"wrap_content"、“match_parent”、"weight“、“weightSum”来控制视图组件的宽度和高度
  • 图片适配可以采用9png方案(直接修改png图片的后缀为.9.png,然后在AS中直接进行设置。千万不要右键 Create 9-patch file,不要问我为什么…)
  • 控件之间或者控件大小尽量设置间距,不要直接设置宽高。
  • 适当引入百分比布局库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值