Android adb-wm命令详解

1.wm窗口管理命令可以获取屏幕的 分辨率、像素密度 等信息,甚至可以临时修改屏幕的 分辨率、像素密度 等参数,可以很方便地查看 APP 在不同像分辨率和素密度手机/平板上的显示效果。

查看帮助
wm
# 或
wm help

查看 屏幕分辨率 和 像素密度
wm size                 # 查看屏幕的 分辨率, 单位: px
wm density              # 查看屏幕的 像素密度, 单位: dpi(dots per inch)

修改 屏幕分辨率 和 像素密度
wm size 720x1280        # 把屏幕分辨率(宽x高)修改为: 720px * 1280px
wm size 360dpx640dp     # 把屏幕分辨率(宽x高)修改为: 360dp * 640dp
                        # dp 单位将根据当前 density 自动转换为 px

wm density 360          # 把屏幕像素密度改为 360 dpi

wm size reset           # 撤销对屏幕分辨率的修改(改回真实的物理分辨率)
wm density reset        # 撤销对屏幕像素密度的修改(改回真实的像素密度)

屏幕尺寸、分辨率、像素密度 这三个参数时相互关联的,可以由其中两个参数算出第三个参数,像素密度的单位是 dpi(即每英寸的像素点数量),因此有下列公式:

                    像素点数(px)
物理尺寸(inch) = ---------------------
                  像素密度(px/inch)

修改 分辨率 和 像素密度,实际上修改后导致的是屏幕尺寸的变化,当然这个改变是虚拟的,只不过是修改成和指定尺寸屏幕的显示效果(显示内容的多少)一致:

分辨率相同,像素密度(density) 越大,屏幕尺寸越小,显示的内容越少(dp/sp 作为显示单位)。
分辨率相同,像素密度(density) 越小,屏幕尺寸越大,显示的内容越多(dp/sp 作为显示单位)。

rk3588_s:/ # wm help
Window manager (window) commands:
  help
      Print this help text.
  size [reset|WxH|WdpxHdp] [-d DISPLAY_ID]
    Return or override display size.
    width and height in pixels unless suffixed with 'dp'.
  density [reset|DENSITY] [-d DISPLAY_ID]
    Return or override display density.
  folded-area [reset|LEFT,TOP,RIGHT,BOTTOM]
    Return or override folded area.
  scaling [off|auto] [-d DISPLAY_ID]
    Set display scaling mode.
  dismiss-keyguard
    Dismiss the keyguard, prompting user for auth if necessary.
  disable-blur [true|1|false|0]
  user-rotation [-d DISPLAY_ID] [free|lock] [rotation]
    Print or set user rotation mode and user rotation.
  dump-visible-window-views
    Dumps the encoded view hierarchies of visible windows
  fixed-to-user-rotation [-d DISPLAY_ID] [enabled|disabled|default]
    Print or set rotating display for app requested orientation.
  set-ignore-orientation-request [-d DISPLAY_ID] [true|1|false|0]
  get-ignore-orientation-request [-d DISPLAY_ID]
    If app requested orientation should be ignored.
  set-multi-window-config
    Sets options to determine if activity should be shown in multi window:
      --supportsNonResizable [configValue]
        Whether the device supports non-resizable activity in multi window.
        -1: The device doesn't support non-resizable in multi window.
         0: The device supports non-resizable in multi window only if
            this is a large screen device.
         1: The device always supports non-resizable in multi window.
      --respectsActivityMinWidthHeight [configValue]
        Whether the device checks the activity min width/height to determine
        if it can be shown in multi window.
        -1: The device ignores the activity min width/height when determining
            if it can be shown in multi window.
         0: If this is a small screen, the device compares the activity min
            width/height with the min multi window modes dimensions
            the device supports to determine if the activity can be shown in
            multi window.
         1: The device always compare the activity min width/height with the
            min multi window dimensions the device supports to determine if
            the activity can be shown in multi window.
  get-multi-window-config
    Prints values of the multi window config options.
  reset-multi-window-config
    Resets overrides to default values of the multi window config options.
  reset [-d DISPLAY_ID]
    Reset all override settings.
  tracing (start | stop)
    Start or stop window tracing.
  logging (start | stop | enable | disable | enable-text | disable-text)
    Logging settings.

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 显示或修改显示display size
wm size: return or override display size.
         width and height in pixels unless suffixed with 'dp'.

//显示或修改display密度
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.

//说明: 前提没有设置数字,图案,PIN密码,如果是锁屏待机状态,执行此命令后,直接解锁进入桌面
wm dismiss-keyguard: dismiss the keyguard, prompting the user for auth if necessary.


实例:

wm size 分辨率

wm density 缩放密度

wm size -d 0 // 得到屏幕编号 0(内屏)的分辨率

wm size -d 1 // 得到屏幕编号 1(外屏)的分辨率

wm size 1108*1080 -d 1 // 修改外屏的分辨率为 1080p

wm size reset -d 1 // 重置外屏分辨率为默认值

wm density 234 -d 1 // 修改外屏缩放

wm size 480x720 -d 1 // 修改外屏分辨为 480*720(长方形)

2.dpi density ppi px dp sp

名词解释备注
dpi像素密度(Dots Per Inch),
指每英寸的像素
公式是dpi=屏幕对角线像素总数px/屏幕对角线长度in
常见的dpildpi:120 mdpi:160 hdpi:240 xhdpi:320 xxhdpi:480 xxxxhdpi:640
density屏幕密度,规定以160dpi的屏幕其屏幕密度为1,反过来说就是屏幕密度为1的屏幕上1in上有160px
ppiPPI(Pixel Per Inch)
分辨率例如 1920 * 1080 就是说 我的屏幕宽度有 1920 个像素点 ,高度有 1080 个像素点。
屏幕大小例如我的是4.0 英寸, 就是指 从屏幕的左上角 到 屏幕的右下角 连线长度为4.0英寸
px像素单位。最基础的图像构成元素单位。 1px代表1个像素
dpAndroid开发上的基于屏幕密度的一种密度无关的像素单位,1dp代表的像素长度=density * 1px
dp单位解决了同尺寸不同分辨率下,保持显示比例一致
sp放大像素。Android发明的长度单位,一般用于设置字体大小

wm fixed-to-user-rotation 表示是否将屏幕固定到用户设置的旋转方向

wm fixed-to-user-rotation -d 0 enabled // 启用内屏方向强制旋转

wm fixed-to-user-rotation -d 1 disabled // 先禁用外屏方向强制旋转

wm fixed-to-user-rotation -d 1 enabled // 启用外屏方向强制旋转

wm user-rotation -d 1 lock 1 // 锁定旋转外屏的方向到 1 , lock 后面的数字参数 0,1,2,3 对应上下左右四个方向

frameworks/base/services/core/java/com/android/server/wm/DisplayRotation.java

//    wm fixed-to-user-rotation -d 0 enabled
    boolean isFixedToUserRotation() {
        switch (mFixedToUserRotation) {
            case IWindowManager.FIXED_TO_USER_ROTATION_DISABLED:
                return false;
            case IWindowManager.FIXED_TO_USER_ROTATION_ENABLED:
                return true;
            default:
                return mDefaultFixedToUserRotation;
        }
    }

直接return true 或者改default的值为true

参考文献:

Android日积月累系统之三-adb-shell-wm命令 - 掘金 (juejin.cn)

三星 Z Flip5 美丽小废物修改外屏分辨率与旋转方向的研究 - 知乎 (zhihu.com)

  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值