nnegier
V2EX  ›  Android

Android 怎么获取 Activity 横竖屏?我暂没找到靠谱 api

  •  
  •   nnegier · Sep 15, 2022 · 12579 views
    This topic created in 1340 days ago, the information mentioned may be changed or developed.
    首先我不能用只要一个 Context 就行的,ctx.getResources().getConfiguration().orientation ,这种不行,有一点点滞后,尤其是横竖屏跳界面切换的时候,实测,这个 pass 。
    OrientationEventListener 这个也不要,pass 。

    希望是能在 Activity 生命周期方法里同步能获取到的。

    Activity 的 getRequestedOrientation()方法对于 xml 中写死的 landscape 和 portrait 可行,但是未指定的那种就不行了。
    我想除此之外,我可不可以通过横竖屏的宽高比来判断是横屏还是竖屏,如果宽大于高是横屏反之是竖屏?

    实属困惑,特来求教。
    5 replies    2022-09-19 19:13:19 +08:00
    dntilee
        1
    dntilee  
       Sep 16, 2022
    首次用 context.getResources().getConfiguration().orientation ,之后用 onConfigurationChanged 监听吧。
    横竖屏宽高比,在部分折叠屏上会有问题
    xmai
        2
    xmai  
       Sep 16, 2022
    int rotation = getWindowManager().getDefaultDisplay().getRotation();
    WindowManager#getDefaultDisplay 在 API 30 中已弃用用于获取关联显示的方法 WindowManager 。此方法的用法应替换为 DisplayManager#getDisplay().
    请注意,文档建议使用 Context#getDisplayAPI 30+,但 DisplayManagerAPI 为 API 17+ 提供相同的功能。
    nnegier
        3
    nnegier  
    OP
       Sep 16, 2022
    @xmai 意思就是这个可行,在 API17+上,真是太感谢了,开始准备尝试
    nnegier
        4
    nnegier  
    OP
       Sep 16, 2022
    @xmai 更正这个对于我而言也不太靠谱,另外这个 API 获取的宽高也不太靠谱,尤其是我锁屏时 adb install apk 后台跑起来时。因为它也是全局的,不是仅针对某一个应用的状态。
    Helsing
        5
    Helsing  
       Sep 19, 2022 via iPhone
    重写 onConfigurationChange 方法
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   905 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 22:12 · PVG 06:12 · LAX 15:12 · JFK 18:12
    ♥ Do have faith in what you're doing.