React native логическое условие для ориентации react-native-video для react-native-video

Я серьезно новичок в родной теме React. Я застрял на действительно простом условии проверки ориентации видеоплеера.

Мои шаги кода:

  1. Приведенный ниже код - это мое состояние boolean.
state = {
    viewmode: false,
};

2. В приведенной ниже строке кода показаны мои значки видеоплеера (альбомная и портретная).

<TouchableWithoutFeedback onPress={this.changeViewModes}>
  <MIcon name={!this.state.viewmode ? "fullscreen" : "fullscreen-exit"} size={30} color="#FFF"></MIcon>
</TouchableWithoutFeedback>

До сих пор все работало хорошо. но когда дело доходит до требований, видеопроигрыватель должен переключаться в альбомный режим и портретный режим.
Итак, я написал одно условие, при котором он не работает должным образом и показывает только один режим - портретный или альбомный, но не вращающийся.

changeViewModes = () => {
  if (!this.state.viewmode == false) {
    //fullscreen
    this.player.presentFullscreenPlayer();
    Orientation.lockToLandscape();
  } else {
    //fullscreen_exit
    Orientation.lockToPortrait();
  }
};
  1. Код видеокомпонента

<Video  paused={this.state.paused}
        source={LightVideo}
        style={{ width: "100%", height }}
        resizeMode="contain"
        onLoad={this.handleLoad}
        onProgress={this.handleProgress}
        onEnd={this.handleEnd}
        ref={ref =>

 { this.player = ref;}}
          />

Может ли кто-нибудь помочь мне повернуть мой видеоплеер из ландшафтного режима в портретный и наоборот.


person Deepthi Sareddy    schedule 12.11.2019    source источник
comment
viewmode (true) означает не полный экран?   -  person Lenoarod    schedule 12.11.2019
comment
@Lenoarod Точная проблема заключается в том, что когда, когда страница загружена, видеоплеер будет в портретном режиме, но когда я нажимаю полноэкранный режим, он превращается в полноэкранный и ландшафтный режим, который я хочу, но теперь, если я снова щелкну, то он по-прежнему будет только в ландшафтном режиме. Он больше не переключается в портретный режим.   -  person Deepthi Sareddy    schedule 12.11.2019
comment
@Lenoarod, пожалуйста, посмотрите правку. Я вставил код видеокомпонента и изменения значка   -  person Deepthi Sareddy    schedule 12.11.2019
comment
когда полноэкранный дескриптор выхода вручную, вы также должны вызвать dismissFullscreenPlayer   -  person Lenoarod    schedule 12.11.2019
comment
@Lenoarod не работает   -  person Deepthi Sareddy    schedule 12.11.2019
comment
вы использовали мое состояние обновления кода viewmode?   -  person Lenoarod    schedule 12.11.2019
comment
о, извини, я неправильно понимаю твою логику. ваше состояние ViewModel противоположно экрану управления   -  person Lenoarod    schedule 12.11.2019
comment
остальная часть проблемы может быть вызвана установленными вами шириной и высотой компонента.   -  person Lenoarod    schedule 12.11.2019
comment
@Lenoarod я сделал   -  person Deepthi Sareddy    schedule 12.11.2019


Ответы (1)


Я использую viewmodel true, что означает полноэкранный режим. и вы нажимаете свой Mico, чтобы изменить полноэкранный режим.

// this is your video component
Video source={{uri: "background"}}   
       ref={(ref) => {
         this.player = ref
       } />
state = {
viewmode: false, // true means full screen
};

<TouchableWithoutFeedback onPress = {this.changeViewModes}>
              <MIcon name = {!this.state.viewmode ? "fullscreen" : "fullscreen-exit"} size = {30} color="#FFF"></MIcon>
              </TouchableWithoutFeedback>

changeViewModes = () => {

if(!this.state.viewmode)
{ 
  //fullscreen
  this.player.presentFullscreenPlayer();
  Orientation.lockToLandscape();

} else {

  //fullscreen_exit
  this.player.dismissFullscreenPlayer()  // you don not call this method
  Orientation.lockToPortrait(); 

}
// you also have to update the state
this.setState({
   viewModel:!viewModel

})

}

person Lenoarod    schedule 12.11.2019
comment
даже его правда или ложь, мой код не работает. Точная проблема заключается в том, что когда, когда страница загружена, видеоплеер будет в портретном режиме, но когда я нажимаю полноэкранный режим, он переключается в полноэкранный и ландшафтный режим, который я хочу, но теперь, если я снова нажму, то он все равно будет только в альбомном режиме. Он больше не переключается в портретный режим. - person Deepthi Sareddy; 12.11.2019
comment
во-первых, ваш код не меняет состояние, поэтому значок не меняется со статусом. и укажите код вашего видеокомпонента. - person Lenoarod; 12.11.2019