2017-03-09 1 views
0

私はビデオビューと相対レイアウトを使用しています。アプリはポートレートモードでのみ実行されます。現在、私は希望のサイズを得るために正確なdpsを与えています。私が望むものは、私のレイアウトの半分の大きさのビデオビューを得ることです。私のビデオビューをデバイスの画面の半分にするにはどうすればいいですか?

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

答えて

1

最初のものを参照してください期待していない、あなたはDisplayMetricsと呼ばれるandroid.Utilクラスを使用して、高さと幅の両方を得ることができます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); 
     } 
    }); 

を使用します。

DisplayMetrics displayMetrics = new DisplayMetrics(); 

次に、現在のディスプレイ情報を宣言されたDisplayMetricsに挿入します。

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

今あなたが使用して、画面の高さと幅を取得することができます:の重量機能を使用してみてください

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

最後の行は私が探していたものです –

+0

@ChitKhine助けてよろしいですか? :D –

0

あなたは

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

を使用して高さと幅を取得することができます最も簡単な方法は、目に見えない視野に入れ、layout_weightsを使用することですが、それは私の意見では、正しい方法ではありません。私がテストしたが、私はあなたが一般的な考え方

0

:それはピクセル単位で測定され、そしてあなたがで高さを変更することができます

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

を直線レイアウト

<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

私はそれを試みた、それは動作しません –

関連する問題