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)
上一篇 2022年6月5日 下午11:16
下一篇 2022年6月5日 下午11:16


相关推荐

  • does have any_has many

    does have any_has many使用京东云OSS的外链访问(自己程序拼的外链,并非是OSS服务器上给定的外链).访问报如下错误ThisXMLfiledoesnotappeartohaveanystyleinformationassociatedwithit.Thedocumenttreeisshownbelow.<Error> <statusCode>403</statusCode> <Code>AccessDenied</Code&g

    2026年1月16日
    5
  • 支持向量积【SVM】

    支持向量积【SVM】支持向量积根据数据的情况分为三种 如果数据是线性可分的 则用线性可分支持向量积 如果数据是近似线性可分的 则用线性支持向量积 如果数据是不可分的 则用非线性支持向量积 一 线性可分支持向量积 1 1 线性可分模型的定义线性可分支持向量积的数据是线性可分 如下图所示 存在一个超平面能将数据完全分开 而支持向量积训练的目的就是找到一个超平面能将上述的数据分开 但是能将数据分开的超平面

    2026年3月17日
    2
  • 多线程同步案例

    多线程同步案例利用 Thread 或 Runnable 实现一个多用户的银行取款程序 为了保证多个用户在对同一账户取钱时数据的一致性 可通过定义静态变量和线程同步两种方式实现 要求 1 用户可选择使用的取款方式应包含柜台和 ATM 取款 2 采用将账号的钱数定义为静态变量的方式实现该程序 每次不同的用户取钱后打印账号余额 3 采用线程同步的方式实现该程序 每次不同的用户取钱后打印账号余额 静态变量方法 importjava util Random classDrawMon

    2026年3月19日
    2
  • Mysqldump备份报错

    Mysqldump备份报错

    2021年5月30日
    110
  • win11 修改host文件[通俗易懂]

    win11 修改host文件[通俗易懂]转到“开始”菜单搜索栏,输入“记事本”,然后以管理员身份运行记事本。单击文件并从菜单中选择“打开…”选项。在“文件名:”选项中输入主机文件地址(C:\Windows\System32\drivers\etc\hosts),然后单击“打开”。选择打开所有文件可以看到host文件在您的记事本上打开Host文件,然后您可以从这里对其进行编辑。输入IP地址和域名以配置映射。保存修改注意查看保存的文件类型为所有文件提示替换同意之后退出完成修改…

    2022年10月12日
    4
  • 从浅层到深层:下一代人工智能体(Agent)的架构演进

    从浅层到深层:下一代人工智能体(Agent)的架构演进

    2026年3月16日
    2

发表回复

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

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