2016-09-10 24 views
6

Mam aplikację podobną do kanału Facebook z filmami w nich. Używam react-native-video do renderowania filmów. Teraz, aby zrobić wideo na pełnym ekranie, zawinąłem komponent do innego komponentu. Ten inny komponent ma TouchableHightlight. W ramach zdarzenia onPress TouchableHighlight tworzona jest nowa trasa, a this.props.children jest przekazywane jako rekwizyt do komponentu na trasie. Nowy komponent właśnie sprawia, że ​​{this.props.children}. Ale to powoduje, że owinięty komponent Wideo odmontowuje i jest rekonstruowany w nowym widoku (to jest wywołuje ponownie konstruktor komponentu). To powoduje, że wideo ładuje się i zaczyna od pozycji początkowej, zamiast korzystać z tego samego komponentu i przechowywać buforowane dane i wznawiać je z miejsca, w którym zostało.Udostępnianie widoku między dwoma widokami reaguje natywnie

Link do projektu demonstracyjnego: https://github.com/shahankit/video-player-fullscreen

Chcę coś podobnego do domyślnego sterowania odtwarzaczem, które jest wbudowane gdy kontrole prop podjęcia.

Te sposoby wytwarzania składnika iść fullscreen pochodzi z react-native-lightbox

+1

masz do wykorzystania trasy dokonać zmiany, można użyć stanu kontrolować, czy film jest na pełnym ekranie lub nie? –

+0

OK, mogę używać stanu, ale w rzeczywistej aplikacji mam wideo zawinięte w bardzo skomplikowaną hierarchię widoków. Żeby zrobić pełny ekran muszę zrobić, aby widok owijający komponent Video przesuwał się nad wszystkimi komponentami i obejmował cały ekran. – meteors

+0

Możesz zmienić widok, aby był pełny ekran przy pomocy CSS. {position: 'absolute', góra: 0, lewo: 0, prawo: 0, dół: 0}. Z-index może być problemem, ponieważ nie jest obsługiwany w trybie reagowania natywnego. Jeśli tak, możesz rozważyć po prostu przekazanie bieżącego czasu odtwarzania jako rekwizytu do nowego komponentu i rozpoczęcie odtwarzania z tego miejsca. –

Odpowiedz

0

Utwórz widok hierarchii podobny do następującego.

- Root View(position: absolute) 
    - Your old entire screen layout which small video view is inside of it. 
    - Your fullscreen video view with opacity = 0 with more zIndex 

następnie użyć onPress na małym widzenia wideo, aby przełączyć krycie pełnoekranowego widoku wideo

Powiązane problemy