2017-03-09 2 views
0

Ich verwende eine Videoansicht und ein relatives Layout. Die App wird nur im Hochformat ausgeführt. Momentan gebe ich genaue dps, um die gewünschte Größe zu erhalten. Was ich gerne hätte, ist, die Videoansicht mit der halben Größe meines Layouts zu bekommen.Wie kann ich meine Videoanzeige auf die Hälfte meines Bildschirms stellen?

<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> 

Antwort

1

Das erste, was sehen Sie die Höhe und die Breite mit einem android.Util Klasse namens DisplayMetrics bekommen:

DisplayMetrics displayMetrics = new DisplayMetrics(); 

Und dann die aktuellen Display-Informationen in die angegebenen DisplayMetrics:

getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
einfügen

Jetzt können Sie die Höhe und Breite des Bildschirms erhalten, indem mit:

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

Es in Pixel gemessen wird, und Sie können durch die Höhe ändern:

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

dank für Ihre Hilfe war die letzte Zeile, was ich für –

+0

@ChitKhine Glad zu helfen suchen! : D –

0

können Sie die Höhe und Breite erhalten, indem mit

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

Der einfachste Weg, in einer unsichtbaren Ansicht zu setzen und verwenden layout_weights aber das ist nicht der richtige Weg, meiner Meinung nach. Ich würde ein 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); 
     } 
    }); 

Nicht getestet, aber ich hoffe, dass Sie die allgemeine Idee

0

Versuchen Gewicht mit Merkmale 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

Ich habe das versucht, es funktioniert nicht –

Verwandte Themen