/frameworks/base/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java

简化计算公式:x = (最短边px / 2)/ 默认dpi
小: 默认显示
默认: 默认显示
大: x > 1.09
较大:x > 1.18
最大:x> 1.27

默认dpi获取方式:
adb shell wm density
adb shell getprop ro.sf.lcd_density

     // 获取默认dpifinal int defaultDensity = DisplayDensityUtils.getDefaultDisplayDensity(Display.DEFAULT_DISPLAY);// 选取最短边像素final int minDimensionPx = Math.min(metrics.widthPixels, metrics.heightPixels);// 160 * 最小边像素 / 320 final int maxDensity = DisplayMetrics.DENSITY_MEDIUM * minDimensionPx / MIN_DIMENSION_DP;// 最大dpi / 默认dpi 最大值为1.5final float maxScale = Math.min(MAX_SCALE, maxDensity / (float) defaultDensity);// 最小倍数 默认值 0.85final float minScale = MIN_SCALE;// 计算档位数量,当(maxScale-1) / 0.09大于3时取3,其它时候取(maxScale-1) / 0.09,通常最大档位在平板中出现。final int numLarger = (int) MathUtils.constrain((maxScale - 1) / MIN_SCALE_INTERVAL,0, SUMMARIES_LARGER.length);// 小是默认,可忽略final int numSmaller = (int) MathUtils.constrain((1 - minScale) / MIN_SCALE_INTERVAL,0, SUMMARIES_SMALLER.length);

MathUtils.constrain

    public static float constrain(float amount, float low, float high) {return amount < low ? low : (amount > high ? high : amount);}

计算每档dpi的值
小:默认乘以0.85

        if (numLarger > 0) {final float interval = (maxScale - 1) / numLarger;for (int i = 0; i < numLarger; i++) {// Round down to a multiple of 2 by truncating the low bit.// (最大dpi-默认dpi) * 当前档位 / 总档位数 + 默认dpifinal int density = ((int) (defaultDensity * (1 + (i + 1) * interval))) & ~1;if (currentDensity == density) {currentDensityIndex = curIndex;}values[curIndex] = density;entries[curIndex] = res.getString(SUMMARIES_LARGER[i]);curIndex++;}}

Android 显示档位相关推荐

  1. 【Android实现16位灰度图数据转RGB数据并以bitmap格式显示】

    Android实现16位灰度图数据转RGB数据并以bitmap显示(单通道Gray数据转三通道RGB数据并显示) 需求 发现问题 解决方案 需求 问题需求:项目上需要实现将深度相机传感器给出的数据实时 ...

  2. 【示波器专题】为什么示波器在最小幅度档位下显示的波形很粗?

    在使用示波器测试时会发现,将示波器的幅度档位调到最小档位时,得到显示结果是一条比较粗的直线.如下图所示为鼎阳示波器SDS1102X-C在CH1通道什么都不接时X10档的最小幅度下的波形: 下图所示为正 ...

  3. @scheduled 每30s 执行一次_全球首发5G神U麒麟820,荣耀30S卡位5G档位最强,售价2399起...

    荣耀总裁赵明:荣耀30S将再次打造一个中端机不可逾越的高峰,告诉大家什么才是真正的5G手机.荣耀30S是让中端机在5G全面普及的产品! 3月30日,全球年轻人热爱的科技品牌荣耀,以线上云发布的形式,正 ...

  4. Android显示系统详解

    一.显示系统的分类: 我们来思考一个问题:从普通用户角度来说,某个APP页面(例如购物APP首页)是怎么被显示到屏幕的? 首先看到的是物理屏幕,然后是屏幕中软件工程师编写的APP页面,也就是手机屏幕驱 ...

  5. 新能源汽车档位控制器软件功能定义及其策略

    **新能源汽车档位控制器软件功能定义及其策略** 整车档位定义及控制策略(P.R.N.D) 1档位定义 1.1 停车档(P档) 当换挡手柄在P时,P档锁止,使驱动轮不能转动,防止汽车移动.P档系统主要 ...

  6. 【转】自上而下解读Android显示流程

    同济大学 计算机系统结构硕士 107 人赞同了该文章 当我们点击"知乎"这个应用后,它是怎么在屏幕上显示出来的? 这个问题困扰我很久了,当我刚接触显示的时候,大约是十年前的事情了, ...

  7. PHP绿色集成环境共生模式与多开案例,PHPWAMP多档位综合教程。

    最近有学生向我咨询如何同时建立多个不同PHP版本站点,并自定义任意版本,软件是否可以多开,PHPWAMP如何设置才能与其他的环境同时使用等问题,本文将一一解决. 简单介绍一下PHPWAMP 你们应该会 ...

  8. 芯片+步进电机档位控制实验

    1.系统功能 目的:学习步进电机的控制. 使用设备:步进电机.两位共阴数码管.按键 功能:驱动步进电机以不同转速(4档)转动,并将当前档位用数码管显示 (1)按键 KEY1 作为启动和停止的切换按键: ...

  9. Android 显示、隐藏状态栏和导航栏

    Android 显示.隐藏状态栏和导航栏 控制状态栏显示,Activity的主题中配置全屏属性 <item name="android:windowFullscreen"&g ...

最新文章

  1. 什么是智能医院?如何构建自己的解决方案?
  2. python编程入门单例_常见的在Python中实现单例模式的三种方法
  3. 工作三年,我没给家里一分钱,还把家里掏空了
  4. powerbuilder查询符合条件的数据并且过滤掉其他数据_论文浅尝 ISWC2020 | KnowlyBERT: 知识图谱结合语言模型补全图谱查询...
  5. CSS3的几个变形案例……
  6. this和static
  7. Robust Regression_2016_鲁棒回归推导
  8. kuka机器人外部轴异步_KUKA机器人外部轴标准配置
  9. 表单组件_从0到1封装表单组件(TypeScript + Vue3.0 版)
  10. 高等数学——驻点,拐点,极值点
  11. Paper intensive reading (二十五):Fecal Viral ...Virion-Enriched Metagenomics and Metatranscriptomics
  12. 服务器显示htx插槽,Socket F接口Opteron主板与服务器Computex展示
  13. 已阻止跨源请求:同源策略禁止读取位于
  14. 插件 iOS微信自动抢红包(非越狱)
  15. 汽车导航系统升级包2023年1月16日
  16. MATLAB 自带 神经网络工具包
  17. 【Spring-Cloud-Alibaba】Nacos配置中心
  18. 这些个辞职申请,在下佩服至极
  19. 曾经写的传奇游戏修改器!C++源码打包好了
  20. android ui 适配(tv)

热门文章

  1. ros地图显示在android,ROS地图的实际距离测量
  2. 润生集团2022年度业绩内部汇报 | 相信 · 热爱 · 创造
  3. Docker的形象比喻
  4. 理解DNS记录以及在渗透测试中的简单应用
  5. 2021-4-8 考研复旦大学 计算机 复试通过 经验回顾
  6. 企业固定资产管理难点
  7. 【计算机网络】数据链路层详解
  8. 20201216-2层MTU和IP MTU
  9. 处理微信昵称的emoji表情
  10. 数据库系统概念 | 第七章:使用E-R模型的数据库设计 | ER图设计| ER图转化为关系模型 | 强实体和弱实体