一、比如 视频、图片,全屏时候一般需要控制手机方向
社区支持: https://github.com/yamill/react-native-orientation
二、刘海屏支持
如视频,根据 刘海屏 文档,默认的情况为:竖屏支持应用使用刘海区域,横屏不支持。目前几乎所有的视屏应用都是在全屏时(此时为横屏),使用刘海区域的空间,参考上面文档和 这篇文章,在 RN 中开启横屏支持
public class MainActivity extends ReactActivity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
+ layoutParams.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+ getWindow().setAttributes(layoutParams);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+ }
+
+ super.onCreate(savedInstanceState);
+ }
可考虑封装为组件
三、刘海区域
在应用中,即使默认的竖屏,常需要感知刘海区域,以避免可交互内容延伸到刘海区域,可使用 react-native-safe-area-context 干这个活,react-navigation 的 Header 和 Bottom 相关组件就是用这个来保证按钮在安全区域内。