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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • datax(8):TaskGroupContainer源码解读

    datax(8):TaskGroupContainer源码解读继续深挖datax里的container,任务一个任务进入datax都会判断是jobContainer还是TaskGroupContainer。那后者要做哪些事情。一,TaskGroupContainer概述JobContainer将所有的task分配到TaskGroup中执行,TaskGroup启动5个线程去消费所有的taskTaskGroupContainer里的主入口为start方法,实现自AbstractContainer.startTaskGroupContainer.start.

    2022年5月17日
    41
  • android 中间大两边小,android 画廊效果(中间大两边小)的无限轮播banner「建议收藏」

    android 中间大两边小,android 画廊效果(中间大两边小)的无限轮播banner「建议收藏」android画廊效果(中间大两边小)的无限轮播bannerps:项目要求做一个中间大两边小的轮播图,百度了一圈有了些灵感,分享一下心得,国际惯例先上效果图banner.gif废话不多说,直接上关键代码:/***Createdbytfon2018/12/21.*/importandroid.content.Context;importandroid.os.Handler;impo…

    2022年5月24日
    134
  • AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用「建议收藏」

    一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的。因此就要对需要传输的数据进行在客户端进行加密,然后在服务器进行解密! 加密和解密的算法有很多,主流有对称加密和非对称加密!两者的区别就不在这里做介绍,有不懂的朋友可以去查Google。 (精读阅读本篇可能花费您10…

    2022年2月26日
    44
  • laravel 中first和find区别(总结一)

    laravel 中first和find区别(总结一)

    2021年11月10日
    47
  • JAVA事件适配器的作用

    JAVA事件适配器的作用适配器 其实从接口事件演变尔来的。相当于触发器,说简单点,它就是一些动作。例如说鼠标的按下点击还有键盘等等。适配器就是实现接口事件的类不过,不是真的实现,只是空实现,没有具体的方法体。适配器主要是为了方便程序员操作,避免了代码的重复性。只要一个对象或者属性添加了这个适配器,那么它就会监视这对象或属性。例如说一个按纽。按纽添加一个MouseAdap

    2022年5月4日
    50
  • Android开发环境搭建

    Android开发环境搭建Android开发环境搭建可以分为以下四步:第一步、安装JDK;第二步、安装Eclipse;第三步、下载并安装AndroidSDK;第四步、为Eclipse安装ADT插件下面详细介绍。第一

    2022年7月1日
    21

发表回复

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

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