Density 工具类

修改density,scaleDensity,densityDpi 值,直接更改系统内部对于目标尺寸而言的像素密度。

public class Density {private static final float WIDTH = 320;// 参考设备的宽,单位是 dpprivate static float appDensity;// 表示屏幕密度private static float appScaleDensity; // 字体缩放比例,默认 appDensitypublic static void setDensity(Application application, Activity activity){DisplayMetrics displayMetrics = application.getResources().getDisplayMetrics();if (appDensity == 0){appDensity = displayMetrics.density;appScaleDensity = displayMetrics.scaledDensity;// 添加字体变化监听回调application.registerComponentCallbacks(new ComponentCallbacks() {@Overridepublic void onConfigurationChanged(@NonNull Configuration newConfig) {// 字体发生变化,重新对 scaleDensity 进行赋值if (newConfig!=null && newConfig.fontScale>0){appScaleDensity = application.getResources().getDisplayMetrics().scaledDensity;}}@Overridepublic void onLowMemory() {}});}// 计算目标 density,scaleDensity,densityDpifloat targetDensity = displayMetrics.widthPixels / WIDTH;float targetScaleDensity = targetDensity*(appScaleDensity / appDensity);int targetDensityDpi = (int) (targetDensity * 160);// 替换 Activity 的 density,scaleDensity, densityDpiDisplayMetrics metrics = activity.getResources().getDisplayMetrics();metrics.density = targetDensity;metrics.scaledDensity = targetScaleDensity;metrics.densityDpi = targetDensityDpi;}
}

 BaseActivity 设置

public class BaseActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Density.setDensity(getApplication(),this);}
}

修改系统density, densityDpi 适配相关推荐

  1. 修改系统density适配

    文章目录 一.简述 二.追根溯源 三.实现 3.1 定义Density用于对系统类值的修改 3.2 在MainActivity中调用 3.3 处理应用程序关于字体大小的监听 3.4 如果多界面统一处理 ...

  2. 屏幕适配--修改系统density进行屏幕适配

    上次发了自定义像素适配后,有小伙伴问我修改density到底是怎么做的.遇到这个问题,我是懒得写一篇博客来说明的,但是当我准备搜一篇发链接给他时,看到好多博客写的并不完整或者看不明白,所以我就自己写吧 ...

  3. android修改系统density,Android应用开发Android 修改系统默认density

    本文将带你了解Android应用开发Android 修改系统默认density,希望本文对大家学Android有所帮助. 如你所知在Anroid N 中,系统添加了多个级别的密度值供用户选择. 系统的 ...

  4. Android屏幕适配-修改全局density

    转自:https://www.jianshu.com/p/e02cd88ae062,记录一下,以便查阅 屏幕适配好几种,目前主流且成本最低的还是修改系统density的方案. 概念 像素:屏幕的最小单 ...

  5. Android 屏幕适配(修改系统字体大小、显示大小、修改分辨率相关适配)

    Android实际开发中会遇到各种各样的机型,所以就需要对多种机型进行适配.常见的适配在这类就不详细介绍了,大家可以参考这里的系列文章Android通用屏幕适配讲解的已经很详细了.下面说的是:当修改系 ...

  6. 安卓小米系统开发一些适配问题

    开发最佳实践与兼容性建议(适配常见问题) MIUI是基于Android深度定制的操作系统,和Android保持100%兼容,我们准备了一些在Android开发过程中哦给你可能遇到的问题,也许对您有所帮 ...

  7. iOS 的 APP 在系统中如何适配不同的屏幕的尺寸

    iOS 的 APP 在系统中如何适配不同的屏幕的尺寸 标签: 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone ...

  8. Android px density densityDpi dp 之间的关系和区别

    px 表示屏幕的物理像素,例如 1080×1920 densityDpi 简称dpi,我们常说的像素密度,表示1英寸上对应有多少个像素,例如 160dpi.320dpi.440dpi.480dpi. ...

  9. 修改系统tabbar的高度

    项目中用到了不规整的tabbar, 但是如果使用自定义又会有tabbar动画方面的问题 找到了一个折中的办法, 修改系统tabbar的高度 - (void)viewDidLoad {     [sup ...

最新文章

  1. 字节跳动java笔试题目_牛客网--字节跳动面试题--特征提取
  2. Tensorflow—非线形回归
  3. iOS中 UITableViewCell cell划线那些事 韩俊强的博客
  4. Yii2.0 数据库更新update
  5. Java 洛谷 P1089 津津的储蓄计划讲解
  6. python 回调函数(Callback)
  7. OpenGL ES之GLKit的使用功能和API说明
  8. 【转载】ACM中矩阵乘法的应用
  9. android volume挂载流程,Android SDCard UnMounted 流程分析(一)
  10. 如何防止表单的重复提交
  11. 都说 Go 可以开启成千上万的 Goroutine,那调度器是怎么处理核上任务分配的?
  12. #includebits/stdc++.h包含C++的全部头文件
  13. 华为qy2音乐如何转换为mp3_华为手机还有这种骚操作?开启这个功能,让你体验至尊级待遇...
  14. TEM测试常见问题及解答(五)
  15. flutter 控制iOS设备屏幕可旋转支持方向
  16. Lyx的安装流程(windows10系统)及配置中文环境
  17. Mountain Lion 系统配置 Apache+Mysql+PHP 详细教程
  18. 计算机专业考研有必要二战吗,2019考研:二战考研有必要吗?
  19. 硬盘分区失败数据怎么恢复
  20. Polygon zkEVM zkROM代码解析(2)

热门文章

  1. 怎么解决UG编程3D线加工还是曲面加工流道经常会过切
  2. 2022年NOC软件创意编程(学而思赛道)决赛小学初中组c++,包含答案
  3. 有趣的Docker容器
  4. java hincrby_Redis Hincrby 命令
  5. 如何用C# 实现免费快递查询API接口对接
  6. oracle预算,ORACLE EBS 标准功能预算功能和实例
  7. Zynq7000简介
  8. 重磅!2021QS亚洲大学排名出炉,177所中国高校上榜!
  9. java typehint_Java客户端 Hints说明
  10. c 语言八进制与十进制转换,C 语言进制之间的转换