不要总想着万全之策,写了就是给自己看的,写错了改就行了。

原文:https://www.jianshu.com/p/bd91b611b212

之前一直不知道手机的DPI还可以修改,以前测试我都是用好几个测试机,或者通过修改开发者模式下的最小宽度去看适配的问题。呐,前段时间朋友说可以直接用adb改,赶紧记下来,省的以后忘了。

工具

adb 命令

准备

adb shell

命令

$ wm size
$ wm density

分辨率

wm size [reset|WxH|WdpxHdp]
return or override display size. width and height in pixels unless suffixed with ‘dp’.

查看分辨率:wm size
修改分辨率:wm size 1440x2560
还原初设置:wm size reset

测试机:华为 FRD-DL00

Microsoft Windows [版本 10.0.18363.1500]
(c) 2019 Microsoft Corporation。保留所有权利。C:\Users\BigMoom>adb shell
HWFRD:/ $ wm size                     // 查看
Physical size: 1080x1920              // 返回默认值HWFRD:/ $ wm size 1440x2560           // 设置为 1440x2560HWFRD:/ $ wm size                     // 重新查看
Physical size: 1080x1920              // 硬件默认值
Override size: 1440x2560              // 重写输入的值HWFRD:/ $ wm size reset               // 还原默认值HWFRD:/ $ wm size                     // 重新查看
Physical size: 1080x1920              // 已被还原的硬件默认值

屏幕密度

wm density [reset|DENSITY]
查看密度:wm density
修改密度:wm density 480
还原设置:wm density reset

测试机:华为 FRD-DL00

Microsoft Windows [版本 10.0.18363.1500]
(c) 2019 Microsoft Corporation。保留所有权利。C:\Users\BigMoom>adb shell
HWFRD:/ $ wm density                 // 查看
Physical density: 480                // 返回默认值HWFRD:/ $ wm density 320            // 设置为 320HWFRD:/ $ wm density                // 重新查看
Physical density: 480               // 硬件默认值
Override density: 320               // 重写输入的值HWFRD:/ $ wm density reset          // 还原默认值HWFRD:/ $ wm density                // 重新查看
Physical density: 480               // 已被还原的硬件默认值

可能遇到的问题

1. 换了个小米手机测试,发现报了权限错误。

Security exception: Must hold permission android.permission.WRITE_SECURE_SETTINGS

dandelion:/ $ wm density 480
Security exception: Must hold permission android.permission.WRITE_SECURE_SETTINGSjava.lang.SecurityException: Must hold permission android.permission.WRITE_SECURE_SETTINGSat com.android.server.wm.WindowManagerService.clearForcedDisplaySize(WindowManagerService.java:5687)at com.android.server.wm.WindowManagerShellCommand.runDisplaySize(WindowManagerShellCommand.java:156)at com.android.server.wm.WindowManagerShellCommand.onCommand(WindowManagerShellCommand.java:62)at android.os.ShellCommand.exec(ShellCommand.java:111)at com.android.server.wm.WindowManagerService.onShellCommand(WindowManagerService.java:1191)at android.os.Binder.shellCommand(Binder.java:881)at android.os.Binder.onTransact(Binder.java:765)at android.view.IWindowManager$Stub.onTransact(IWindowManager.java:2574)at com.android.server.wm.WindowManagerService.onTransact(WindowManagerService.java:1432)at android.os.Binder.execTransactInternal(Binder.java:1021)at android.os.Binder.execTransact(Binder.java:994)
咋搞嘞

莫慌,打开下开发者选项中的 USB调试(安全设置) 就行了。

其它命令

有时间可以都看一下,试一试,蛮好玩的。

HWFRD:/ $ wm
usage: wm [subcommand] [options]wm size [reset|WxH|WdpxHdp]wm density [reset|DENSITY]wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]wm scaling [off|auto]wm screen-capture [userId] [true|false]wm size: return or override display size.width and height in pixels unless suffixed with 'dp'.wm density: override display density.wm overscan: set overscan area for display.wm scaling: set display scaling mode.wm screen-capture: enable/disable screen capture.wm dismiss-keyguard: dismiss the keyguard, prompting the user for auth if necessary.wm surface-trace: log surface commands to stdout in a binary format.

方式二

说起来巧了,就像前言说的我不知道手机可以改DPI,之前一直是用的开发者模式下的最小宽度修改来测试。后来发现,这个其实也是修改了DPI,仔细想想density和px还有dp的关系,就突然能明白为啥了。

工具

手机 开发者模式

准备

首先得打开手机的开发者模式,咋打开应该不用说了把。
不知道的小伙伴可以试着去找到你手机的 系统版本 那里一顿狂点。
然后就有惊喜了。
比如:Redmi 9A

操作

咱就直接进入 开发者选项 里把。
找到 绘图 模块下的 最小宽度 栏目。
点开之后直接输入想要的最小宽度就行了。
注意: 这里是以 dp 为单位的。
如果你的UI设计图的宽度跟你的手机不符,开发的时候,可以尝试修改这个达到演示的目的。

如下:Redmi 9A

效果

由于输入的是宽度值,无法直观的看到 density 的变化,但是咱们可以用方式一去验证下,就可以看到它的变化是改了 density 的值的。

机型:Redmi 9A

Microsoft Windows [版本 10.0.18363.1500]
(c) 2019 Microsoft Corporation。保留所有权利。C:\Users\Luffy>adb shell# 修改最小宽度之前,最小宽度360dp
dandelion:/ $ wm size
Physical size: 720x1600
dandelion:/ $ wm density
Physical density: 320# 修改最小宽度之后,最小宽度420dp
dandelion:/ $ wm size
Physical size: 720x1600
dandelion:/ $ wm density
Physical density: 320
Override density: 274

结语

可见,在 分辨率 不变的前提下,修改了最小宽度之后,设备的 density 发生了变化。

Android中的dp在渲染前会将dp转为px,计算公式:
px = density * dp;
density = dpi / 160;
px = dp * (dpi / 160);

参考文献

原文:https://blog.csdn.net/CrazyApes/article/details/116994631
参考:https://developer.android.google.cn/guide/practices/screens_support

修改Android手机的分辨率和屏幕密度相关推荐

  1. android手机屏分辨率和屏幕逻辑,【手机屏幕分辨率】逻辑分辨率和物理分辨率...

    尺寸.png 手机屏幕分辨率是手机重要的参数,大家可能会把分辨率对成手机的高宽度,这是不正确,了解分辨率是ui设计必要的,前端所需要知道的. 移动端设备屏幕尺寸非常多,碎片化严重.尤其是Android ...

  2. Android平台根据分辨率计算屏幕尺寸,基于物理尺寸来验证手机和平板应用合并的可行性

    Android平台根据分辨率计算屏幕尺寸,基于物理尺寸来验证手机和平板应用合并的可行性   出发点:Android系统本身是支持多种分辨率的,如图1所示,一般情况下要适配不同尺寸的设备只需要做两件事, ...

  3. Android 获取设备的分辨率及屏幕密度、sw

    /*** 打印不包括虚拟按键的分辨率.屏幕密度dpi.最小宽度sw*/public void printResolution(Context context){DisplayMetrics dm = ...

  4. 获取Android手机的分辨率通过ADB命令

    获取Android手机的分辨率通过ADB命令 adb shell dumpsys window displays//此命令即可获取 WINDOW MANAGER DISPLAY CONTENTS (d ...

  5. 当前android手机主流分辨率

    以下为今晨(2012-12-19)统计的当前android手机主要分辨率,主要来源于中关村.觉得有价值的可以收藏本帖以备不时之需. 看完以下数据统计之后,请决定dm版要采用的分辨率,谢谢 商超通dm版 ...

  6. android修改输出分辨率,编译Android8.1修改默认分辨率和屏幕密度

    一.第一步:首先修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml 增加两项 1024,768 160 1 2 3 ...

  7. 修改android预览分辨率,wm命令使用方法(修改android 分辨率)修改

    注:Android 4.3引入的wm工具shell wm命令及用法: 系统说明:ide usage:wm [subcommand] [options] wm size [reset|WxH] wm d ...

  8. Android系统移植与调试之-------)如何修改Android手机NFC模块,使黑屏时候能够使用NFC

    我们都知道在不修改源代码的情况下,只能是解锁之后才能使用NFC功能.而在锁屏和黑屏2个状态下是没办法用NFC的,但是最近有个客户要求手机在黑屏状态下能够使用NFC,因此我们需要去修改Android源代 ...

  9. android手机常用分辨率

    QVGA(240x320) 用于 1000元以下的低端Android手机,显示效果和塞班S60V3的手机一样,对软件的兼容性不好,很多应用运行起来可能会无故退出,代表机型有中兴N600.HTC G8 ...

  10. 修改Android手机内核,绕过反调试

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/57086486 0x1.手机设备环境 Model number: Nexus 5 O ...

最新文章

  1. Windows XP中的用户分为3类。
  2. STL源代码分析(ch2 内存分配)jjalloc.h
  3. 获得本机的IP,掩码和网关
  4. php中按引用传递参数,如何通过PHP中的引用传递可变参数的参数?
  5. 调用WebService时加入身份验证,以拒绝未授权的访问
  6. C语言实现linear search线性搜索算法(附完整源码)
  7. bootstrap基础学习【菜单、按钮、导航】(四)
  8. 手工杀毒之“三十六计”
  9. 不能再任性 APP收集个人信息基本规范公开征求意见
  10. 如何在Exchange中处理不能发送的信息
  11. 把excel每一行中的数据输出为一个txt文档的VBA函数
  12. 经纬度(度十进制分)—— 度分秒 转换
  13. Confluence 表格快捷键
  14. 官方文件出炉!北京住建委权威解读商住限购
  15. Selenium的PO模式
  16. python爬虫浏览器伪装和设置代理ip
  17. oracle安装介绍
  18. NGUI Toggle
  19. 金格控件java版本_金格全文批注中间件软件下载
  20. 数据结构:排序 思维导图

热门文章

  1. CAN应用层常用协议
  2. rhel7-firewalld端口转发
  3. stap监控IO脚本
  4. 阿里云推送ReactNative简单集成
  5. QT_kvaser动态链接库配置
  6. 【MATLAB生信分析】MATLAB生物信息分析工具箱(二)
  7. MATLAB与Hspice联合仿真
  8. python itchat库学习笔记 + 微信防撤回实现详解(超详细)(已上传)
  9. 深度学习入门基于python的理论与实现
  10. JanusGraph的使用