我怎样才能让我的视频视图达到我设备屏幕的一半?
How can i make my video view to half the screen of my device?
我正在使用视频视图和相对布局。该应用只会 运行 处于纵向模式。目前,我正在提供精确的 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>
您可以使用
获取高度和宽度
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
mScreenWidth = displayMetrics.widthPixels;
mScreenHeight = displayMetrics.heightPixels;
最简单的方法是放入不可见视图并使用 layout_weights
,但我认为这不是正确的方法。我会使用 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
的 android.Util
class 获得高度和宽度:
DisplayMetrics displayMetrics = new DisplayMetrics();
然后将当前显示信息插入声明的 DisplayMetrics
:
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
现在您可以使用以下命令获取屏幕的高度和宽度:
displayMetrics.widthPixels // Width
displayMetrics.heightPixels // Height
它以像素为单位,您可以通过以下方式更改高度:
videoView.getLayoutParams().height = displayMetrics.heightPixels / 2;
尝试使用线性布局的权重功能
<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>
我正在使用视频视图和相对布局。该应用只会 运行 处于纵向模式。目前,我正在提供精确的 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>
您可以使用
获取高度和宽度DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
mScreenWidth = displayMetrics.widthPixels;
mScreenHeight = displayMetrics.heightPixels;
最简单的方法是放入不可见视图并使用 layout_weights
,但我认为这不是正确的方法。我会使用 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
的 android.Util
class 获得高度和宽度:
DisplayMetrics displayMetrics = new DisplayMetrics();
然后将当前显示信息插入声明的 DisplayMetrics
:
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
现在您可以使用以下命令获取屏幕的高度和宽度:
displayMetrics.widthPixels // Width
displayMetrics.heightPixels // Height
它以像素为单位,您可以通过以下方式更改高度:
videoView.getLayoutParams().height = displayMetrics.heightPixels / 2;
尝试使用线性布局的权重功能
<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>