android 分屏模式适配,安卓适配分屏注意事项

分屏模式下可强制应用横屏,所以注意应用内强制竖屏的页面适配横屏显示

分屏模式下,获取应用所占用的宽高

getResources().getConfiguration().screenWidthDp

getResources().getConfiguration().screenHeightDp

多窗口变更通知和查询

//Activity 提供以下方法来支持多窗口显示:

isInMultiWindowMode()

//调用该方法以确认 Activity 是否处于多窗口模式:

onMultiWindowModeChanged()

应用声明使用多窗口

android:allowBackup=“true”

android:resizeableActivity=“true“ //只能在24以及24以上的手机生效

声明config

android:name=".MainActivity"

android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"/>

重写方法

@Override

public void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

/获取应用的窗口大小

int w_window = getResources().getConfiguration().screenWidthDp;

int h_window = getResources().getConfiguration().screenHeightDp;

/获取应用的窗口大小,根据刷新的应用window宽度,动态调整应用的布局

… …

}

如果应用必须进行重新走生命周期来以响应屏幕切换,需要进行状态的保存和恢复。

您可以通过onSaveInstanceState()和ViewModel对象来进行之前状态保存和后续的恢复。

即,在销毁activity之前,通过onSaveInstancesState()存储状态, 在onCreate() o或者

onRestoreInstanceState()进行状态的恢复。

某些系统 UI 自定义选项将被禁用;例如,在非全屏模式中,应用无法隐藏状态栏

所以应用在分屏模式下需要把关键控件放在状态栏下方区域显示,否则可能出现应用布局

被状态栏遮挡的问题,适配建议:

获取系统状态栏高度:

public static int getStatusBarHeight(Context context) {

int result = 0; int resourceId = context.getResources().getIdentifier("status_bar_height",

"dimen", "android");

if (resourceId > 0) {

result = context.getResources().getDimensionPixelSize(resourceId);

}

return result;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值