android 分屏下的横竖屏判断

本文探讨了分屏模式下应用界面的横竖屏判断逻辑及UI元素的动态调整方法,包括通过宽高对比判断屏幕方向,以及在分屏模式下对AppBar布局进行特殊处理,确保在不同屏幕配置下应用的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分屏模式下的横竖屏并非为非分屏模式下的横竖屏,其横竖屏为非绝对的,具体的横竖值根据分屏后的高度与宽度值大小而定。

//1.宽高判断
DisplayMetrics dm = getResources().getDisplayMetrics()
int width = dm.widthPixels;
int height = dm.heightPixels;
//然后根据宽高的大小比,判断是竖屏(portrait)还是横屏(landscape)。

//2. 是否为竖屏,或者也可以判断是否为横屏。
if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT)
    private void setHomepageAppBarPaddingTop() {
        final View appbar_layout = this.findViewById(R.id.appbar_layout);
        final int paddingTop=getResources().getDimensionPixelSize(R.dimen.appbar_padding);
        ComponentName componentname = new ComponentName("com.android.>>>>", "om.android.>>>>.******");
        if(isInMultiWindowMode()  //分屏 &&!componentname.equals(Objects.requireNonNull(Utils.getSplitScreenPrimaryStack()).topActivity)){
            Log.d(TAG, "setHomepageAppBarPaddingTop: " + Utils.getSplitScreenPrimaryStack().topActivity.toString()+ this.getResources().getConfiguration().orientation+"");
            appbar_layout.setPadding(0,0,0,0);
        }else{
            appbar_layout.setPadding(0,paddingTop,0,0);
        }
    }
    //  判断当前分屏主堆栈
    public static ActivityManager.StackInfo getSplitScreenPrimaryStack(){
        try {
            return ActivityTaskManager.getService().getStackInfo(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, ACTIVITY_TYPE_UNDEFINED);
        } catch (RemoteException e) {
            return null;
        }
    }
// 分屏监听
    @Override
    public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
        super.onMultiWindowModeChanged(isInMultiWindowMode);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shigq-droid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值