有几种方式可以获取屏幕,依次来对比下
1.view-->onLayout/ measure, 如果view是flex:1 则获取的为屏幕真正的可显示宽高(即全面屏含刘海高度,安全区模式不含刘海高度)(实际)
2.Dimens 监听change,在didChange的回调中
例如:{"window":{"width":755.6666666666666,"height":360,"scale":3,"fontScale":1},"screen":{"width":780,"height":360,"scale":3,"fontScale":1}}
在刘海屏手机上,使用安全区模式或全面屏模式,获取到的高度,e.window皆为无刘海高度,e.screen皆为含刘海高度
3.Dimensions.get('window').height 皆为无刘海高度(含安全区及全面屏模式)(实际)
4.Dimensions.get('screen').height 皆为有刘海高度(含安全区及全面屏模式)(全)
5.ExtraDimensions.get('REAL_WINDOW_HEIGHT') 皆为含刘海高度(含安全区及全面屏模式)
(全)
注ExtraDimensions:为react-native-extra-dimensions-android 三方库