一、比如 視頻、圖片,全屏?xí)r候一般需要控制手機(jī)方向
社區(qū)支持: https://github.com/yamill/react-native-orientation
二、劉海屏支持
如視頻,根據(jù) 劉海屏 文檔,默認(rèn)的情況為:豎屏支持應(yīng)用使用劉海區(qū)域,橫屏不支持。目前幾乎所有的視屏應(yīng)用都是在全屏?xí)r(此時(shí)為橫屏),使用劉海區(qū)域的空間,參考上面文檔和 這篇文章,在 RN 中開(kāi)啟橫屏支持
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);
+ }
可考慮封裝為組件
三、劉海區(qū)域
在應(yīng)用中,即使默認(rèn)的豎屏,常需要感知?jiǎng)⒑^(qū)域,以避免可交互內(nèi)容延伸到劉海區(qū)域,可使用 react-native-safe-area-context 干這個(gè)活,react-navigation 的 Header 和 Bottom 相關(guān)組件就是用這個(gè)來(lái)保證按鈕在安全區(qū)域內(nèi)。