安卓适配分屏注意事项

文档:
https://developer.android.com/guide/topics/resources/runtime-changes
https://developer.android.com/guide/topics/ui/multi-window.html#lifecycle

  1. 分屏模式下可强制应用横屏,所以注意应用内强制竖屏的页面适配横屏显示
  2. 分屏模式下,获取应用所占用的宽高
getResources().getConfiguration().screenWidthDp
getResources().getConfiguration().screenHeightDp
  1. 多窗口变更通知和查询
//Activity 提供以下方法来支持多窗口显示:
isInMultiWindowMode()
//调用该方法以确认 Activity 是否处于多窗口模式:
onMultiWindowModeChanged()
  1. 应用声明使用多窗口
  1. 声明config

  1. 重写方法
@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()进行状态的恢复。

  1. 某些系统 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; 
    }

你可能感兴趣的:(安卓适配分屏注意事项)