Android屏幕适配专题

#如何确定对哪些屏幕尺寸进行适配
在一些第三方网站进行查看,比如友盟等推送集成网站或者其他第三方。对市面上主流的手机屏幕尺寸进行适配。

重要概念

屏幕尺寸

屏幕尺寸的计量单位为inch(英寸),1inch约等于2.54cm。手机屏幕尺寸说的是手机屏幕对角线的长度。

计算单位

  • px(像素):屏幕显示的最小计量单位
  • dpi(像素密度)
    计算方式: d p i = x 2 + y 2 i n c h dpi=\frac{\sqrt{x^2+y^2}}{inch} dpi=inchx2+y2
    x是屏幕宽的像素,y是屏幕长的像素,inch是屏幕尺寸
  • dip的计算方式: 1 d p = d p i 160 ∗ p x 1dp=\frac{dpi}{160}*px 1dp=160dpipx
    dpi是像素密度,在像素密度为160的时候,1dp=1px
  • sp是文本大小的单位,官方推荐的大小为12sp、14sp、18sp、22sp四个尺寸;
  • 像素区分:不同文件夹存放的dpi大小范围
名称像素密度范围icon大小代表分辨率(px)換算(px/dp)
mdpi120dp-160dp48x48px320x4801dp=1px
hdpi160dp-240dp72x72px480x8001dp=1.5px
xhdpi240dp-320dp96x96px720x12801dp=2px
xxhdpi320dp-480dp144x144px1080x19201dp=3px
xxxhdpi480dp-640dp192x192px2k1dp=4px

在Google官方开发文档中,说明了 mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 的尺寸比例进行缩放。例如,一个图标的大小为48×48dp,表示在mdpi上,实际大小为48×48px,在hdpi像素密度上,实际尺寸为mdpi上的1.5倍,即72×72px,以此类推。
Android主要分辨率对应的文件名称:
1280720—xhdpi
1920
1080—xxhdpi
854480–hdpi
960
540–hdpi
一般情况下,2k分辨率对应xxxhdpi,1080对应xxhdpi,720对应xhdpi

支持各种屏幕尺寸的解决方案

wrap_content的使用

wrap_content是包含组件大小大小不固定;

weight的使用

weight只有在LinearLayout中才可以使用,weight的含义是占剩余控件的比例。match_parent的意思是一个全屏的长度;

尺寸限定符

新建layout-large文件夹,新建布局文件放在给文件夹中,文件名必须与layout文件夹中的文件名对应,这种写法在android3.2之前使用,应用与平板上,在之后版本不起作用。Android3.2之后使用最小宽度限定符新建layout-sw600dp文件夹,sw=small width该文件夹中的布局代表着在宽度为600dp以上的设备上使用。

限定符

在加入限定符以后,在不同的情况下,斯通股将会在不同的文件夹下面找寻定义的文件

屏幕方向限定符

在文件夹名后添加-port(竖直方向)-land(水平方向)

尺寸大小限定符

在文件夹名后添加-sw[判定的最小尺寸],例如
-sw600dp意思就是当屏幕的宽度大于600dp的时候在这个文件夹中进行查询。

最小版本限定符

在文件夹后面加-V[api版本号],例如-v11表示在api11以上的系统里使用该文件夹下的文件代替默认文件夹中的文件。

使用布局别名

在res下建立
res/layout/main.xml:单面板布局,布局文件
res/layout/man_twopanes.xml:双面板布局,布局文件
res/values/layout.xml默认布局赋值别名文件
res/values-sw600dp/layout.xml宽度大于600dp后的布局赋值别名文件
res/values-sw800dp/layout.xml宽度大于800dp后的布局赋值别名文件

res/valuse/layout.xml默认布局

<resources>
  <item name="main" type="layout">@layout/main</item>
</resources>

res/valuse-sw600dp/layout.xml宽度大于600dp的布局

<resources>
  <item name="main" type="layout">@layout/main_twopanes</item/>
</resources>

res/valuse-sw800dp/layot.xml宽度大于800dp 的布局

<resources>
  <item name="main" type="layout">@layout/main_twopanes</item/>
</resources>

这样就有了main为别名的布局,在activity中使用setContentView(R.layout.main)即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值