超级苦工
阅读 158
Android屏幕适配的总结

屏幕适配的核心:其一,就是适配的效率,即把设计图转化为App界面的过程是否高效,其二如何保证实现UI界面在不同尺寸和分辨率的手机中UI的一致性。

背景知识:

dp的优点,相同dp的控件,能够保证不同屏幕上的实际物理大小相同
缺点:
1、由于屏幕尺寸不一样,对于同样dp的控件,有的屏幕放不下,有的屏幕有留白
2、为了便于统一适配,对于某个区间内的dpi,系统会统一视为某个dpi来使用,比如几部相同分辨率不同尺寸的手机的ppi(屏幕中ppi值等于dpi)可能分别是是430,440,450,那么在Android系统中,可能dpi会全部指定为480,这样的话,dpi/160就会是一个相对固定的数值,但这样就会将实际显示尺寸和清晰度有细微差别。

根据上述缺陷,需要更优秀的屏幕适配方案
1、使用宽高限定符,即穷举市场上的手机宽高分辨率,如values-1920x1080,优点是精确,缺点也是如此,必须要精确匹配,否则只能用默认的宽高dimens;
2、使用最小宽度(或最小高度)限定符,如values-sw360dp,和前一方案原理一致,优点是容错率较高,如果不能精确匹配,系统能往下寻找最接近的资源文件,
两个方法的弊端都是会增大apk体积,dimens文件的体积增大量一般不超过1m,如果算上不同分辨率的图片资源就会增大较多
3、今日头条屏幕适配方案,如果设计稿是360dp宽度,动态设置手机的destiny使其在不同设备上始终保持宽度px/destiny = 360dp,这样就能保证不同屏幕上UI的一致性。
缺陷就是对老项目维护不友好,因为这样会把整个布局尺寸都改动,老项目可能是写死dp或按照最小宽度区分values适配的,需要做较多改动。

经验小提示

  • 限定宽度,高度用match-parent,或者采用滑动方式
  • 百分比布局、weight、ConstraintLayout都是可选工具
AndroidAutoSize 使用经验
  • jessyan是否会对三方库页面产生影响 会
  • 三方库的引用方式中本地引用是否和远程引用等效 是
  • 验证引用jessyan时候项目会不会根据屏幕尺寸选择不同的dimens 会
    核心功能,只要按照设计图写(设计图以dp为单位),然后适配,设置好高度或宽度的基准,就能适配大部分的屏幕(从基准轴根据不同屏幕比例缩放,最大程度接近设计稿效果),基本不需要多个dimens。
    公司音乐模块区分dimens的原因是hls和cat的设计稿都不一样,两个软件的基准值也不一样,所以要区分。

具体方案参考

Android 目前稳定高效的UI适配方案

今日头条屏幕适配方案

关注下面的标签,发现更多相似文章
评论
相关推荐
mark

sdsdsdsd...

1231213213112313

123123...

优秀的Node.js第三方库推荐

axiosAxios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中 cheeriocheerio是一个nodejs实现的类似jquery核心功能的一个模块,用它可...

测试呀

广泛大使馆管道施工幅度顺丰大概岁的法国当时法国对```` 范德萨手动阀是的 范德萨士大夫是的****...

1234123412

我靠,怎么删除鸭?...

test

我们的共和国##...

test

i...

BookStack v2.6 发布,功能类似 GitBook 和看云的在线文档管理系统

程序介绍BookStack,分享知识,共享智慧!知识,因分享,传承久远! BookStack,基于 Mindoc、使用Go语言的Beego框架开发的功能类似GitBook和看云的在线文档管理系统,拥有...

联合索引在B+树上的存储结构及数据查找方式

来源: 掘金 原文: 联合索引在B+树上的存储结构及数据查找方式 能坚持别人不能坚持的,才能拥有别人未曾拥有的。 关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 引言 上一篇文章《MySQL...

这是标题

正文在这里...

从0到1实现Promise

来源: SegmentFault 原文: 从0到1实现Promise 前言 Promise大家一定都不陌生了,JavaScript异步流程从最初的Callback,到Promise,到Generato...

测试标题

测试标题测试标题测试标题...

111

222大啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊...

好看

...

生产环境怎么部署呀

另外,貌似界面不支持移动端...

基于Redis的推荐系统开发

原文: 基于Redis的推荐系统开发 介绍推荐系统并不总是需要用到复杂的机器学习技术.只要手头上有足够的数据,你就可以花很少的功夫开发一个推荐系统.一个最简单的推荐系统可以只是从用户感兴趣的表中查找所...

MongoDB性能优化之准备测试数据

很多时候,我们本地的代码运行的好好的,上线后,刚开始没问题,运行一段时间后就有性能问题了,这是为什么呢? 出现这种情况,往往是本地测试数据量不够,上线后,刚开始,数据量很少,也不会有问题,运行一段时间...

MySQL性能优化之准备测试数据

很多时候,我们本地的代码运行的好好的,上线后,刚开始没问题,运行一段时间后就有性能问题了,这是为什么呢? 出现这种情况,往往是本地测试数据量不够,上线后,刚开始,数据量很少,也不会有问题,运行一段时间...

Android 使用 HTTPS

来源: 简书 原文: Android 使用 HTTPS 如果你的项目的网络框架是okhttp,那么使用https还是挺简单的,因为okhttp默认支持HTTPS。传送门 Android 使用 HTTP...

Android 适配一篇就够 - 编译版本?support?API 兼容?图片适配?

来源: 简书 原文: Android 适配一篇就够 - 编译版本?support?API 兼容?图片适配? 本文介绍 Android 不同系统及图片资源的常见适配问题。 compileSdkVersi...