android autosize原理,Android屏幕适配头条:autosize的原理

android autosize原理,Android屏幕适配头条:autosize的原理主要是固定一个UI尺寸,比如宽度360,然后为了各个density显示的宽度都是360dp,则通过:px=dp*density,density=screenWidthPx/360;记录下文章https://blankj.com/2018/07/30/easy-adapt-screen/我们知道px=dp*density,我们要适配的话需要确保dp不变去修改densit…

大家好,又见面了,我是你们的朋友全栈君。

主要是固定一个UI尺寸,比如宽度360,然后为了各个density显示的宽度都是360dp,则通过 :px=dp * density, density =screenWidthPx / 360;

记录下文章

https://blankj.com/2018/07/30/easy-adapt-screen/

我们知道 px = dp * density,我们要适配的话需要确保 dp 不变去修改 density,而安卓默认 density = dpi / 160,其意思就是 1dp 有多少 px,也就是像素密度,我们开发是按照一份设计稿来做的,那么有没有什么办法来让 density 和设计稿尺寸做联系呢?假设我们设计稿是宽度是 1080px,资源放在 xxhdpi,那么我们宽度转换为 dp 就是 1080 / 3 = 360dp,要在不同设备上宽度都表现为 360dp,那么就需要修改其 density = screenWidthPx / 360,这样就满足了上述条件,而和 density 相关的还有 densityDpi、scaledDensity,我们根据 density 等比修改 densityDpi、scaledDensity 即可。

由于 API 26 及以上的 Activity#getResources()#getDisplayMetrics() 和 Application#getResources()#getDisplayMetrics() 是不同的引用,所以在 API 26 及以上适配是没有影响的,但在 API 26 以下 Activity#getResources()#getDisplayMetrics() 和 Application#getResources()#getDisplayMetrics() 是相同的引用,导致适配有问题,这里要感谢 @MirkoWu 提出的问题,后面会有解决之法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134988.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java详细安装教程(含安装包+详细安装视频)

    java详细安装教程(含安装包+详细安装视频)一、java历史简介1991年Sun公司的JamesGosling等人开始开发名称为Oak(橡树)的语言。希望用于控制嵌入在有线电视交换盒、PDA等的微处理器,1994年将Oak语言更名为Java1998年JDK1.2时,更名为Java2Platform分为标准版J2SE,企业版J2EE,微型版J2MEJava既安全、可移植,又可跨平台,而且人们发现它能够解决Internet上的大型应用问题,Internet使Java成为网上最流行的编程语言,Java对Internet的

    2022年7月9日
    21
  • hive中数据类型转换_csv文件导入sqlserver数据库中

    hive中数据类型转换_csv文件导入sqlserver数据库中1.类型映射关系mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表。mysql到hive数据类型映射参考如下:mysql数据类型hive数据类型整型bigintBIGINT整型intBIGINT整型smallintBIGINT整型tinyintBIGINT浮点型decimaldecimal浮点型double

    2022年9月21日
    3
  • PrepareStatement概述

    PrepareStatement概述PrepareStatement概述Statement安全问题Statement执行,其实是拼接sql语句的。先拼接sql语句,然后在一起执行。 Stringsql=”select*fromt_userwhereusername='”+username+”‘andpassword='”+password+”‘”; UserDaodao=ne…

    2022年6月11日
    42
  • windows环境下,如何在Pycharm下安装TensorFlow环境「建议收藏」

    windows环境下,如何在Pycharm下安装TensorFlow环境「建议收藏」原文转自:https://blog.csdn.net/u012052268/article/details/74202439最近由于工作需要要使用TensorFlow,所以只能狂补相关的知识。本来博主打算在Ubantu上玩,但是由于一些原因还是放弃了这个想法,就转移到Pycharm上来玩。以下是自己在收集资料的过程中看到一篇很好的安装教程,分享一下。1.安装Anaconda选择相应的A…

    2022年8月25日
    7
  • Eclipse深度患者设置VSCode快捷键「建议收藏」

    Eclipse深度患者设置VSCode快捷键「建议收藏」VSCode设置Eclipse中常用的快捷键将eclipse中一些基本的快捷键输入右侧用户快捷键设置中://Placeyourkeybindingsinthisfiletooverwritethedefaults[{"key":"alt+/","command":"editor.action.triggerSuggest","when":…

    2022年5月27日
    78
  • mysql去重查询数量_mysql 数据去重

    mysql去重查询数量_mysql 数据去重数据库版本 mysql5 5 10 操作工具 navicateform 插入数据重复了用 mysql 语句去重查询数量是否大于 1 大于 1 表示有重复数据 SELECTcount FROMfinancia summary detailtGROUP SUMMARY ID t SOURCE t TEXT 根据查询创建临时表 createtablet t

    2025年11月20日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号