修改Android手机的分辨率和屏幕密度
不要总想着万全之策,写了就是给自己看的,写错了改就行了。
原文: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手机的分辨率和屏幕密度相关推荐
- android手机屏分辨率和屏幕逻辑,【手机屏幕分辨率】逻辑分辨率和物理分辨率...
尺寸.png 手机屏幕分辨率是手机重要的参数,大家可能会把分辨率对成手机的高宽度,这是不正确,了解分辨率是ui设计必要的,前端所需要知道的. 移动端设备屏幕尺寸非常多,碎片化严重.尤其是Android ...
- Android平台根据分辨率计算屏幕尺寸,基于物理尺寸来验证手机和平板应用合并的可行性
Android平台根据分辨率计算屏幕尺寸,基于物理尺寸来验证手机和平板应用合并的可行性 出发点:Android系统本身是支持多种分辨率的,如图1所示,一般情况下要适配不同尺寸的设备只需要做两件事, ...
- Android 获取设备的分辨率及屏幕密度、sw
/*** 打印不包括虚拟按键的分辨率.屏幕密度dpi.最小宽度sw*/public void printResolution(Context context){DisplayMetrics dm = ...
- 获取Android手机的分辨率通过ADB命令
获取Android手机的分辨率通过ADB命令 adb shell dumpsys window displays//此命令即可获取 WINDOW MANAGER DISPLAY CONTENTS (d ...
- 当前android手机主流分辨率
以下为今晨(2012-12-19)统计的当前android手机主要分辨率,主要来源于中关村.觉得有价值的可以收藏本帖以备不时之需. 看完以下数据统计之后,请决定dm版要采用的分辨率,谢谢 商超通dm版 ...
- android修改输出分辨率,编译Android8.1修改默认分辨率和屏幕密度
一.第一步:首先修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml 增加两项 1024,768 160 1 2 3 ...
- 修改android预览分辨率,wm命令使用方法(修改android 分辨率)修改
注:Android 4.3引入的wm工具shell wm命令及用法: 系统说明:ide usage:wm [subcommand] [options] wm size [reset|WxH] wm d ...
- Android系统移植与调试之-------)如何修改Android手机NFC模块,使黑屏时候能够使用NFC
我们都知道在不修改源代码的情况下,只能是解锁之后才能使用NFC功能.而在锁屏和黑屏2个状态下是没办法用NFC的,但是最近有个客户要求手机在黑屏状态下能够使用NFC,因此我们需要去修改Android源代 ...
- android手机常用分辨率
QVGA(240x320) 用于 1000元以下的低端Android手机,显示效果和塞班S60V3的手机一样,对软件的兼容性不好,很多应用运行起来可能会无故退出,代表机型有中兴N600.HTC G8 ...
- 修改Android手机内核,绕过反调试
本文博客链接:http://blog.csdn.net/qq1084283172/article/details/57086486 0x1.手机设备环境 Model number: Nexus 5 O ...
最新文章
- Windows XP中的用户分为3类。
- STL源代码分析(ch2 内存分配)jjalloc.h
- 获得本机的IP,掩码和网关
- php中按引用传递参数,如何通过PHP中的引用传递可变参数的参数?
- 调用WebService时加入身份验证,以拒绝未授权的访问
- C语言实现linear search线性搜索算法(附完整源码)
- bootstrap基础学习【菜单、按钮、导航】(四)
- 手工杀毒之“三十六计”
- 不能再任性 APP收集个人信息基本规范公开征求意见
- 如何在Exchange中处理不能发送的信息
- 把excel每一行中的数据输出为一个txt文档的VBA函数
- 经纬度(度十进制分)—— 度分秒 转换
- Confluence 表格快捷键
- 官方文件出炉!北京住建委权威解读商住限购
- Selenium的PO模式
- python爬虫浏览器伪装和设置代理ip
- oracle安装介绍
- NGUI Toggle
- 金格控件java版本_金格全文批注中间件软件下载
- 数据结构:排序 思维导图