如何将视频视图设置为设备屏幕的一半?

时间:2017-03-09 03:52:57

标签: android layout android-videoview

我正在使用视频视图和相对布局。该应用程序只能以纵向模式运行。目前,我给出了精确的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>

4 个答案:

答案 0 :(得分:1)

首先,您可以使用名为android.Util的{​​{1}}类来获取高度和宽度:

DisplayMetrics

然后将当前显示信息插入声明的DisplayMetrics displayMetrics = new DisplayMetrics();

DisplayMetrics

现在,您可以使用以下方法获取屏幕的高度和宽度:

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

以像素为单位进行测量,您可以通过以下方式更改高度:

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

答案 1 :(得分:0)

您可以使用

获取高度和宽度
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
    mScreenWidth = displayMetrics.widthPixels;
    mScreenHeight = displayMetrics.heightPixels;

答案 2 :(得分:0)

最简单的方法是放入一个不可见的视图并使用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);
        }
    });

未经测试,但我希望您能看到一般的想法

答案 3 :(得分:0)

尝试使用linearlayout的重量特征

 <div style="width:40px;height:100px;">
<div id="relative">
    <div class="absolute">yellow</div>
</div>
<div id="relative" style="top: 54px">red</div>
</div>

#relative {
    position: relative;
    /* width: 40px; */
    height: 80px;
    background: #f00;
    z-index: 0;
    /* margin-top: 30px; */
}
.absolute {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 12;
    width: 200px;
    height: 150px;
    background: yellow;
}