Android屏幕适配

QuibblerQuibbler 2020-02-25 约 6 分钟 1665 次阅读

屏幕适配


1、布局适配

        Android 设备的形状和尺寸多种多样,因此应用的布局需要十分灵活。也就是说,布局应该从容应对不同的屏幕尺寸和方向,而不是为布局定义刚性尺寸,假定屏幕尺寸和宽高比是一定的。

1.1、ConstraintLayout 

        要创建适用于不同屏幕尺寸的自适应布局,最佳做法就是将 ConstraintLayout 用作界面中的基本布局。使用 ConstraintLayout,您可以根据布局中视图之间的空间关系来指定每个视图的位置和大小。通过这种方式,当屏幕尺寸改变时,所有视图都可以一起移动和拉伸。

1.2、备用布局

        values/layout是必须的,主要布局都放在这里。对于一些不常用的屏幕,可以单独写一个布局进行适配,放在不同的layout-文件夹中。

        通过创建额外的 res/layout/ 目录来提供特定于屏幕的布局(针对需要不同布局的每种屏幕配置创建一个),然后将屏幕配置限定符附加到 layout 目录名称(例如,对于可用宽度为 600dp 的屏幕,附加限定符 layout-w600dp;例如,对于屏幕高度至少为 600dp 的屏幕,使用限定符 layout-h600dp。)。

        实际证明此种方法只适用于Activity加载布局,当其它应用通过反射等方式加载第三方应用的布局View时,是不会选择合适的layout。

2、资源适配


2.1、资源备用

dpi范围

密度

0dpi ~ 120dpi

ldpi

120dpi ~ 160dpi

mdpi

160dpi ~ 240dpi

hdpi

240dpi ~ 320dpi

xhdpi

320dpi ~ 480dpi

xxhdpi

480dpi ~ 640dpi

xxxhdpi

缩放倍数:以mdpi为基准,drawable-mdpi:drawable-hdpi:drawable-xhdpi:drawable-xxhdpi:drawable-xxxhdpi = 1 : 1.5 :2 : 3 :4 ; 即dpi范围的最大值之比。

密度

建议尺寸

drawable-mdpi

48 * 48

drawable-hdpi

72 * 72

drawable-xhdpi

96 * 96

drawable-xxhdpi

144 * 144

drawable-xxxhdpi

192 * 192

1.2、改用矢量图形

        除了创建多个特定于密度的图片版本之外,另一种方法是仅创建一个矢量图形。在借助矢量图形创建图片时,使用 XML 定义路径和颜色,而不是使用像素位图。因此,矢量图形可以缩放到任何尺寸而不会出现缩放失真,不过它们通常最适合图标等插图,而不太适合照片。

        矢量图形通常以 SVG(可缩放矢量图形)文件的形式提供,但 Android 不支持此格式,因此您必须将 SVG 文件转换为 Android 的矢量图格式。

        让GUI提供SVG,或者自己自定义shape形状也是不错的选择,不必每种分辨率类型的都提供一张资源。参考Android自定义背景样式Shape

3、Android资源命名规则

为了适配不同屏幕大小的android手机或android平板,有时候就需要利用限定符来为不同的屏幕设定不同的布局文件。android中一些常用的限定符如下所示:

屏幕特性限定符描述
屏幕尺寸small小屏幕
 normal基准屏幕
 large大屏幕
 xlarge超大屏幕
屏幕密度ldpi<=120dpi
 mdpi<= 160dpi
 hdpi<= 240dpi
 xhdpi<= 320dpi
 xxhdpi<= 480dpi
 xxhdpi<= 640dpi(只用来存放icon)
 nodpi与屏幕密度无关的资源.系统不会针对屏幕密度对其中资源进行压缩或者拉伸
 tvdpi介于mdpi与hdpi之间,特定针对213dpi,专门为电视准备的,手机应用开发不需要关心这个密度值.
屏幕方向land横向
 port纵向
屏幕宽高比long比标准屏幕宽高比明显的高或者宽的这样屏幕
 notlong和标准屏幕配置一样的屏幕宽高比

相关推荐

精选
ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager
Android

ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager

ViewPager1、ViewPagerandroidx.viewpager.widget.ViewPager,Android中使用非常广泛的控件,可以说是APP必备:首次打开引导页、页面Banner广告等。常用方法:setAdapter() 设置适配器setOffscreenPageLimit() 设置缓存的页面个数,默认是 1setCurrentItem() 跳转到特定的页面setOnPage

1.1k
获取Android内置WebView内核版本
Android

获取Android内置WebView内核版本

获取Android内置WebView内核版本竟然能遇到这样奇葩的事情,网页用的技术过于新颖,以至于只支持高版本Chromium内核的,低版本安卓系统中内置的内核版本较低,无法加载前端页面。1、设置查看在系统设置里 > 应用 > 应用管理 > 显示系统应用,查看WebView组件:2、页面查看通过WebView发起的网络请求,都会带上浏览器的UA,通常页面都可以通过UA判断浏览器的内核版本。这里有两

1.1w
Android 14适配总结
Android

Android 14适配总结

Android 14适配总结毕业工作至今已经适配了三个Android大版本,从Android 11到Android 12、再到Android 13。2023年,Google即将推出的Android 14,上半年已经开始第一批适配。现在,第四个Android版本已经适配完,总结记录一下。1、Android 14计划Google一般会在2月份对外发布预告,同时放出开发者预览版。“拉通”各大平台、厂商以

1.1w