描述

今日头条屏幕适配方案终极版,一个极低成本的 Android 屏幕适配方案.

预览

Pixel 2 XL | 1440 x 2880 | 560dpi:

Pixel XL | 1440 x 2560 | 560dpi:

Nexus 5X | 1080 x 1920 | 420dpi:

Nexus 4 | 768 x 1280 | 320dpi:

Nexus S | 480 x 800 | 240dpi:

Notice

对于老项目,如果使用了 AndroidAutoLayout,请参考 AndroidAutoLayout 迁移指南,AndroidAutoSize 可以和 AndroidAutoLayout 一起使用,因为 AndroidAutoLayout 使用的是 px,所以 AndroidAutoSize 对它不会产生任何影响,如果老项目的某些页面之前使用了 dp 进行布局,并且 AndroidAutoSize 对这些页面已经产生了不良影响,可以让之前使用了 dp 的旧 Activity 实现 CancelAdapt 取消适配,建议使用副单位,使用副单位则不会影响之前使用了 dp 的页面 (也不会影响三方库和系统控件),详情请查看 demo-subunits

Download

implementation 'me.jessyan:autosize:1.2.1'

Usage

Step 1 (真的不吹牛逼,只需要以下这一步,框架就可以对项目中的所有页面进行适配)

请在 AndroidManifest 中填写全局设计图尺寸 (单位 dp),如果使用副单位,则可以直接填写像素尺寸,不需要再将像素转化为 dp,详情请查看 demo-subunits

Preview

布局时的实时预览在开发阶段是一个很重要的环节,很多情况下 Android Studio 提供的默认预览设备并不能完全展示我们的设计图,所以我们就需要自己创建模拟设备,下面就介绍下 dp、pt、in、mm 这四种单位的模拟设备创建方法

如果您在预览时不希望在 Preview 中出现状态栏和导航栏, 则可以根据下图选择 panel 主题,使用该主题后纵向分辨率刚好填充整个预览页面,显示效果完全和设计图一致

为了方便广大新手,所以还是将创建模拟设备的步骤贴出来,为大家操碎了心,如果觉得 AndroidAutoSize 不错,请一定记得 star,并将 AndroidAutoSize 推荐给您的伙伴们

DP

如果您在 layout 文件中使用 dp 作为单位进行布局 (AndroidAutoSize 默认支持 dp、sp 进行布局),则可以根据公式 (sqrt(纵向分辨率^2+横向分辨率^2))/dpi 求出屏幕尺寸,然后创建模拟设备 (只用填写屏幕尺寸和分辨率)

PT

如果您在 layout 文件中使用 pt 作为单位进行布局 (需要通过 AutoSizeConfig.getInstance().getUnitsManager().setSupportSubunits(Subunits.PT); 打开对单位 pt 的支持),则可以根据公式 (sqrt(纵向分辨率^2+横向分辨率^2))/72 求出屏幕尺寸,然后创建模拟设备 (只用填写屏幕尺寸和分辨率)

IN

如果您在 layout 文件中使用 in 作为单位进行布局 (需要通过 AutoSizeConfig.getInstance().getUnitsManager().setSupportSubunits(Subunits.IN); 打开对单位 in 的支持),则可以根据公式 sqrt(纵向分辨率^2+横向分辨率^2) 求出屏幕尺寸,然后创建模拟设备 (只用填写屏幕尺寸和分辨率)

MM

如果您在 layout 文件中使用 mm 作为单位进行布局 (需要通过 AutoSizeConfig.getInstance().getUnitsManager().setSupportSubunits(Subunits.MM); 打开对单位 mm 的支持),则可以根据公式 (sqrt(纵向分辨率^2+横向分辨率^2))/25.4 求出屏幕尺寸,然后创建模拟设备 (只用填写屏幕尺寸和分辨率)

Advanced (以下用法看不懂?答应我,认真看 demo 好不好?)

Activity

当某个 Activity 的设计图尺寸与在 AndroidManifest 中填写的全局设计图尺寸不同时,可以实现 CustomAdapt 接口扩展适配参数

public class CustomAdaptActivity extends AppCompatActivity implements CustomAdapt {

@Override

public boolean isBaseOnWidth() {

return false;

}

@Override

public float getSizeInDp() {

return 667;

}

}

当某个 Activity 想放弃适配,请实现 CancelAdapt 接口

public class CancelAdaptActivity extends AppCompatActivity implements CancelAdapt {

}

Fragment

首先开启支持 Fragment 自定义参数的功能

AutoSizeConfig.getInstance().setCustomFragment(true);

当某个 Fragment 的设计图尺寸与在 AndroidManifest 中填写的全局设计图尺寸不同时,可以实现 CustomAdapt 接口扩展适配参数

public class CustomAdaptFragment extends Fragment implements CustomAdapt {

@Override

public boolean isBaseOnWidth() {

return false;

}

@Override

public float getSizeInDp() {

return 667;

}

}

当某个 Fragment 想放弃适配,请实现 CancelAdapt 接口

public class CancelAdaptFragment extends Fragment implements CancelAdapt {

}

Subunits (请认真看 demo-subunits,里面有详细介绍)

可以在 pt、in、mm 这三个冷门单位中,选择一个作为副单位,副单位是用于规避修改 DisplayMetrics#density 所造成的对于其他使用 dp 布局的系统控件或三方库控件的不良影响,使用副单位后可直接填写设计图上的像素尺寸,不需要再将像素转化为 dp

AutoSizeConfig.getInstance().getUnitsManager()

.setSupportDP(false)

.setSupportSP(false)

.setSupportSubunits(Subunits.MM);

下载

AndroidAutoSize-master.zip

源码下载

开源

项目地址:

autosize px转dp_干货集中营相关推荐

  1. 推荐 | 有三AI生态新的资源干货集中营,好书好工具好内容等你来淘

    微信公众号 今天给大家推荐一个微信公众号<有三言选>,是有三AI团队维护的资源干货集中营,专栏包括有三图书馆,AI好书推荐,好工具,好技术专栏,好资源,好星球,好课程以及定期举行的送书福利 ...

  2. 一个MVP+RxJava+Retrofit的干货集中营

    欢迎掘金的小伙伴们访问我的博客网站,原文链接:wensibo.top/2017/05/15/- ,未经允许不得转载! 今天想要与大家一起分享的五月份的时候用一个星期开发的一个app--干货集中营客户端 ...

  3. 再次爬取干货集中营的福利图片

    值得学习的地方 1.utc时间转换成普通时间的函数,也就是把2015-06-05T03:54:29.403Z格式的时间转换成2015-06-05 11:54:29 2.使用requrests获取htt ...

  4. 干货集中营(分享)-每日分享妹子图和技术干货

    说明 网址:http://gank.io/ API接口:http://gank.io/api 根据API接口做的一个客户端代码,客户端不是我做的,是@gaolonglong做的. 项目github地址 ...

  5. 干货集中营app制作

    前一阵利用一些免费的api接口做了一个新闻类的app,挺简陋的,但是自己用着还是可以的. 后来看到个干货集中营的api,里面的内容是一些大神们分享在github上的开源项目,非常值得学习.既然提供给了 ...

  6. 一款追求全新用户体验的干货集中营 iOS客户端

    Gank集中营 一款追求全新用户体验的干货集中营 iOS客户端 作者:CoderKo1o GitHub:https://github.com/iphone5solo/Gank 官网:http://ga ...

  7. Kotlin版 极简 干货集中营 APP

    项目地址 首先这是我的一个Kotlin练手项目,规模很小,显示干货集中营的几个分类模块,使用的还是我习惯使用的java框架,虽然遇到了一些问题,不过提高了Kotlin的熟练度,踩了一些Kotlin的坑 ...

  8. 关于干货集中营的一个开源App

    中秋佳节,玩了一天,撸了两天代码,搞出这么个东东,共享出来,小伙伴们如果有兴趣,欢迎添砖加瓦. 数据接口为干货集中营的数据,接口地址: http://gank.io/api 使用到的技术清单如下: 1 ...

  9. 技术干货集中营——WOT 2017全球架构与运维技术峰会

    技术干货集中营--WOT 2017全球架构与运维技术峰会等你来! WOT,World Of Tech专注互联网IT技术领域 三大章节,15大技术专场,60+国内外一线互联网精英大咖站台 打造兼顾技术视 ...

  10. 关于代码家(干货集中营)共享知识点汇总系列——App

    关于代码家(干货集中营)共享的所有知识点App部分的汇总,后续每周会对其进行更新 更多内容请选择以下入口 关于代码家(干货集中营)共享知识点汇总系列--Android 关于代码家(干货集中营)共享知识 ...

最新文章

  1. YOLOv5导出jit,onnx,engine
  2. 服务器如何运行java文件_在linux服务器上运行java文件
  3. Magento后台表单字段添加备注
  4. Java输出彩色字符
  5. Rman创建DG环境
  6. Kotlin — 编程语言
  7. 2. wordpress 友情链接的备份和导入
  8. T5: Text-To-Text Transfer Transformer
  9. Junit框架使用--JUnit常用断言及注解
  10. Soem配置汇川SV660N
  11. html坦克游戏,HTML5+JS实现坦克大战小游戏
  12. zuma族蚂网优化日志:SEO网站跳出率
  13. surface usb启动_Surface Book 2开发人员印象和USB-C的魔力
  14. java连连看实验报告_连连看实验报告
  15. Visual Studio 2022的下载安装及使用
  16. Python中级 —— 01面向对象进阶
  17. 【一键生成】3DMAX配景楼生成插件使用教程
  18. 历史上的重大软件BUG启示录 第1篇---瞳的陨落
  19. 爬取公众号全部文章,就是这么简单 |Selenium自动化
  20. Excel 公式小技巧之公式中如何让某些变量不变,让某些变量限制行变或列表(教程含解决方案)

热门文章

  1. hbase常识及habse适合什么场景
  2. 《Cisco安全防火墙服务模块(FWSM)解决方案》——2.6 硬件架构
  3. IDE已破解,不用预热,马上进入「微信小程序」开发
  4. Linux 安装 MySQL 以及 一些常见问题解决方案
  5. JVM中也有并发GC,CMS机制
  6. web controls归档
  7. 动态引入js文件和css样式表文件
  8. myeclipse 报内存不足的解决方法
  9. mybatis使用mapper代理的方式操作数据库
  10. 0084-CYX的异己