La vidéo en plein écran joueur - mediacontroller derrière la barre de navigation
J'ai un problème avec mediacontroller qui est cachée derrière la barre de navigation (soft touches de navigation sur ICS). Au premier abord est OK (première image), mais quand c'est la barre de navigation cachée pour la première fois, mediacontroller est redimensionnée pour s'adapter à l'écran (correct), mais n'est pas redimensionnée en arrière quand la barre de navigation s'affiche à nouveau (deuxième image). Ad est déplacé derrière (caché pour la capture d'écran).
Si je comprends documentation correcte fitsSystemWindows devrait être responsable pour le redimensionnement. Mais cela ne fonctionne pas.
Comment puis-je le faire? Merci pour toute aide.
Je suis en essais présent sur le Galaxy Nexus.
XML mise en page:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playerLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:animateLayoutChanges="true"
android:background="@color/black" >
<mynamespace.BKDVideoView
android:id="@+id/videoview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<mynamespace.SubtitleTextView
android:id="@+id/subtitleText"
style="@style/SubtitleOverlayText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="30dp"
android:gravity="center"
android:visibility="gone"
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"/>
<FrameLayout
android:id="@+id/adLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"/>
<FrameLayout
android:id="@+id/videoMediaControllerHolder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"/>
BKDVideoView est la copie de GrepCode de VideoView avec quelques personnalisations. J'ai fait de même pour MediaController.
Dans MediaController je vais appeler cachent comme ça:
int newVis = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_LAYOUT_STABLE;
if (!visible)
{
newVis |= SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
//mSystemUiHolder -> FrameLayout (playerLayout)
mSystemUiHolder.setSystemUiVisibility(newVis);
Mise à jour: Dans le cas où vous avez le même problème s'il vous plaît vérifier également le commentaire accepté de répondre. Pour les vues qui doit être en plein écran utiliser sammyboy code. Merci à tous les deux. Désolé, que j'ai besoin de trop de temps pour comprendre cela et je ne pouvais pas vous donner des points 🙁
Comme je l'ai dit ci-dessus, il est une coutume VideoView et MediaController. Alors j'ai un FrameLayout qui est transparent et plein écran et contient deux autres points de vue, en haut et en bas qui ont une taille fixe et sont placés en haut (layout_gravity=en haut) et en bas. Rien de spécial 🙂
vous pouvez poster votre code source. il sera très utile pour moi.
Bas contrôles: pastie.org/private/t2p0xkppk34ipl3in4888q
comment avez-vous gérer la bascule de l'écran.
OriginalL'auteur zoki | 2012-11-05
Vous devez vous connecter pour publier un commentaire.
c'est systembar problème. Certains appareils fill_parent ou match_parent entités a plein screensizes et ne reconnaissent pas systembar de largeur et de hauteur.
Je suggère que: par programmation donner une valeur entière de vues. (calculer un système de barre de largeur et de hauteur). et supprimer sb largeur ou de la hauteur (paysage ou portrait) à partir de screensize
et de définir cette valeur à la vue.
ici la réponse comment obtenir les dimensions de l'écran etc.
J'ai étudié un peu plus. android:fitsSystemWindows ne fonctionne que si l'activité n'est pas en plein écran, et là, j'ai eu un problème. Dans ce cas, la seule solution était de mettre en programmaticaly de largeur et de hauteur et de définir la gravité haut|gauche (comme vous l'avez dit). Désolé que je ne peux pas vous donner des points ou plus du tout 🙁
OriginalL'auteur Barış Çırıka
Regardez ceci:
http://bin-liu.blogspot.no/2012/03/how-to-hide-and-display-navigation-bar.html
.
OriginalL'auteur sweggersen
Utilisation
bringToFront()
pour le point de vue d'être au topOriginalL'auteur Kavin Varnan
Depuis
VideoView
s sontSurfaceView
s, ils n'ont pas le même comportement normalView
. Vous devez vous assurer qu'il reste en arrière-plan en précisant:OriginalL'auteur Phil
ajouter
android:fitsSystemWindows="false"
à l'intérieur de votre framelayout qui contiennent le surfaceview.et ce code à l'intérieur de votre activité
OriginalL'auteur Sujith Manjavana