以纵向模式在videoview中全屏制作视频[重复]

Posted

技术标签:

【中文标题】以纵向模式在videoview中全屏制作视频[重复]【英文标题】:Make video in videoview full screen in portrait mode [duplicate] 【发布时间】:2016-09-30 02:06:42 【问题描述】:

我在 videoview 中有一个视频,它作为我的登录/注册活动的背景播放和循环播放。视频播放和循环很好,只是它没有覆盖整个屏幕。活动被锁定为纵向模式,但视频仅显示在屏幕的下半部分(就像在横向模式下一样)。 videoview 本身确实覆盖了整个屏幕。这是我当前的代码。

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_launcher);

    VideoView videoView = (VideoView) findViewById(R.id.launcherVideo);
    Uri src = Uri.parse("android.resource://com.package/raw/video");
    videoView.setVideoURI(src);

    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 

        @Override
        public void onPrepared(MediaPlayer mp) 

            mp.setVolume(0, 0);
            mp.setLooping(true);
        
    );

    //videoView.setMediaController(new MediaController(this));

    videoView.start();

这是我的xml

<VideoView
    android:id="@+id/launcherVideo"
    android:layout_
    android:layout_
    android:layout_above="@+id/linearLayout" />

如何让视频在任何尺寸的设备上全屏显示?

【问题讨论】:

【参考方案1】:

没有看过整个布局 xml,我猜this 可能会有所帮助。

尝试使用 RelativeLayout 包装您的 VideoView 并将其与父级对齐:

<VideoView
    android:id="@+id/launcherVideo"
    android:layout_
    android:layout_
    android:layout_alignParentTop="true"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true">

【讨论】:

【参考方案2】:
  <RelativeLayout
            android:id="@+id/video_layout"
            android:layout_
            android:layout_
            android:layout_below="@+id/progress_limit">

            <com.example.FullScreenVideoView
                android:id="@+id/video_view"
                android:layout_
                android:layout_
                android:layout_alignParentTop="true"
                android:layout_alignParentBottom="true"
                android:layout_alignParentEnd="true"
                android:layout_alignParentStart="true"/>
            <ProgressBar
                android:id="@+id/progress"
                android:layout_
                android:layout_
                android:indeterminate="false"
                android:layout_centerInParent="true"
                 />
        </RelativeLayout>

并且还使用它对我有用的代码

public class FullScreenVideoView extends VideoView 
    public FullScreenVideoView(Context context) 
        super(context);
    

    public FullScreenVideoView(Context context, AttributeSet attrs) 
        super(context, attrs);
    

    public FullScreenVideoView(Context context, AttributeSet attrs, int defStyle) 
        super(context, attrs, defStyle);
    

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
    

【讨论】:

【参考方案3】:

您可以尝试使用TextureView 而不是VideoView,就像answer 描述的那样

【讨论】:

以上是关于以纵向模式在videoview中全屏制作视频[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用旋转和按钮处理 VideoView 全屏和纵向

Videoview 在框架布局内没有全屏显示

Android VideoView 方向,如 Youtube 应用程序

Android VideoView 中的纵向视频不会占用整个屏幕宽度

React Native:如何使用 expo 在 webview 中制作全屏 youtube 嵌入视频(没有 react-native 链接)

将videoview切换到全屏模式android