Aller au contenu

Lancer une vidéo en plein ecran


tammikuu

Recommended Posts

bonjour, je souhaiterais lancer une vidéo en plein écran, or même en élargissant la videoview (parametres : fill_parent) la vidéo ne prend que la moitié de l'écran (non centré bien sur).


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.presentation);
VideoView view = (VideoView)findViewById(R.id.videoView);
view.setMediaController(new MediaController(this));
view.setVideoURI(Uri.parse("android.resource://"+this.getPackageName()+"/"+R.raw.presentation));
view.requestFocus();
view.start();

j'en profite également pour demander comment ajouter les ascenseurs sur un layout, car j'ai développé mon appli sans tenir compte de la rotation du smartphone et je viens de me rendre compte qu'en paysage la moitié des bouttons on diparus et impossible de descendre sur la vue ...

Modifié par tammikuu
Lien vers le commentaire
Partager sur d’autres sites

j'ai essayé de rajouter :

[/size][/size][/size]
<VideoView android:layout_width="fill_parent" android:id="@+id/videoView"
android:layout_height="fill_parent" android:layout_alignParentRight="true"
android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
android:layout_alignParentBottom="true">
</VideoView>

et

android:theme"@android:style/Theme.NoTitleBar.Fullscreen"

rien n'y fait

Modifié par tammikuu
Lien vers le commentaire
Partager sur d’autres sites


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:background="@drawable/background"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<VideoView android:layout_width="fill_parent" android:id="@+id/videoView"
android:layout_height="fill_parent" android:layout_alignParentRight="true"
android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
android:layout_alignParentBottom="true">
</VideoView>
</LinearLayout>

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à vous.

J'ai trouvé une solution qui consiste à redéfinir le layout de la videoView.

Cela fonctionne très bien chez moi mais je ne sais pas si c'est très propre...

mVideoView.layout(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
mVideoView.layout.invalidate();

avec "SCREEN_WIDTH" et "SCREEN_HEIGHT" à remplacer par les valeurs appropriées.

Bien à vous.

Lien vers le commentaire
Partager sur d’autres sites

J'ai résolu le problème en supprimant le linear layout dans le xml, ne laissant que le video view


<?xml version="1.0" encoding="utf-8"?>
<VideoView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:id="@+id/videoView"
android:layout_height="fill_parent" android:layout_alignParentRight="true"
android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
android:layout_alignParentBottom="true" android:layout_gravity="center">
</VideoView>

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Bonjour, concernant la video plein écran, le problème se situe dans le principe de fonctionnement même de la classe VideoView, en effet lorsque tu charges en mémoire le XML contenant genre :

<VideoView
android:id="@+id/video_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"/>

Android va prendre comme référence les dimensions du layout parent. Jusqu'ici tout ce passe comme prévus.

Bémols, lorsque tu charges une vidéo en mémoire, la classe VideoView va procéder à un redimensionnement de la VideoView pour respecter le ratio d'image de la vidéo.

La seul solution que j'ai trouvé, c'est de télécharger la classe VideoView : http://grepcode.com/...id+videoView&n=

Et d'ensuite l'implémenter dans le projet pour ensuite modifier des morceaux de codes pour lancer une video avec les dimensions désirés.

Petit tuto rapide :

Téléchargez la classe VideoView et placer la dans un dossier que vous aurez créé dans le dossier src et on y mettra notre propre classe VideoView .

exemple : src/com/divers/VideoView.java

On modifie la classe VideoView (chercher la méthode OnMeasure qui permet de définir les dimensions ou sinon comme je l'ai fait, créer une méthode scale() avec un appel de layoutParams qui va modifier les dimensions de la VidéoView.

Puis, lorsque vous instancierez VideoView, prenez soin de rajouter le import com.divers.*; et non le import d'origine widget.videoview.

Enfin, dans votre xml, la déclaration videoview sera écrite comme ceci :

<com.divers.VideoView
android:id="@+id/video_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"/>

Conclusion, android, des fois, ça donne envie de frapper des gens... Je ne comprend toujours pas ce qui a pu motiver google à redimensionner les vidéo une fois chargée en mémoire plutôt que de laisser le choix au développeur via un passage de paramètre ou appel de méthode.

je dit ça, car déjà, c'est pénible de mettre en place la méthode que j'ai décrite, mais en plus, vu qu'on instancie une class de notre projet, notre apli n'exploite plus la dernière version de la class widget.VideoView.

Conclusion, cette solution marche très bien, mais elle amène aussi son lot de danger concernant M.A.J et compatibilité. Donc prudence.

Nietsabe

Modifié par Nietsabe
Lien vers le commentaire
Partager sur d’autres sites

Mhn, pour une raison que j'ignore, lorsque je tentais une extends de VideoView, j'avais un crash inexpliqué de l'app, avec des messages dans les log complètements incompréhensible limite ésotérique...

Mais c'est tout à fait possible ce que tu dis Sylvain-a, faudrait que je re-test ultérieurement. Et quand ça marchera (si ça marche) je posterais sur le site la solution, car j'ai l’impression que pas mal de monde se pose la question.

Nietsabe

Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...