2017-03-09 1 views
0

J'utilise une vue vidéo et une disposition relative. L'application ne fonctionnera qu'en mode portrait. Actuellement, je donne des dps précis pour obtenir la taille désirée. Ce que je voudrais, c'est avoir une vue vidéo avec la moitié de la taille de ma mise en page.Comment puis-je afficher ma vidéo sur la moitié de l'écran de mon appareil?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:opencv="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_smile" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="MyActivity"> 

      <VideoView 
       android:id="@+id/videoViewSmile" 
       android:layout_width="match_parent" 
       android:layout_height="300dp" /> 

</RelativeLayout> 

Répondre

1

chose d'abord, vous pouvez obtenir à la fois la hauteur et la largeur en utilisant une classe android.Util appelée DisplayMetrics:

DisplayMetrics displayMetrics = new DisplayMetrics(); 

Et puis insérer les informations d'affichage en cours dans le déclaré DisplayMetrics:

getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 

Maintenant, vous pouvez obtenir la hauteur et la largeur de votre écran en utilisant:

displayMetrics.widthPixels // Width 
displayMetrics.heightPixels // Height 

Elle est mesurée en pixels, et vous pouvez changer la hauteur par:

videoView.getLayoutParams().height = displayMetrics.heightPixels/2; 
+0

merci pour votre aide la dernière ligne était ce que je cherchais –

+0

@ChitKhine Content de vous aider! : D –

0

vous pouvez obtenir la hauteur et la largeur en utilisant

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); 
    mScreenWidth = displayMetrics.widthPixels; 
    mScreenHeight = displayMetrics.heightPixels; 
0

plus simple est de mettre en une vue invisible et utiliser layout_weights mais qui ne sont pas la bonne façon à mon avis. J'utiliser un ViewTreeObserver

final RelativeLayout layout = (RelativeLayout)findViewById(R.id.your_layout); 
    ViewTreeObserver vto = layout.getViewTreeObserver(); 

    vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 

      VideoView videoView = layout.findViewById(R.id.videoViewSmile); 
      ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(layout.getWidth(), layout.getHeight()/2) 

      videoView.setLayoutParams(layoutParams); 
      videoView.invalidate(); 

      layout.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
     } 
    }); 

Non testé, mais j'espère que vous voyez l'idée générale

0

Essayez en utilisant la fonction de poids linearlayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:opencv="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_smile" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="MyActivity"> 

<VideoView 
    android:id="@+id/videoViewSmile" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="0.5" /> 

<RelativeLayout 
    android:id="@+id/remaining_fifty_percent" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="0.5"> 
</RelativeLayout> 

</LinearLayout> 
+0

J'ai essayé ça, ça ne marche pas –