将videoview切换到全屏模式android

Posted

技术标签:

【中文标题】将videoview切换到全屏模式android【英文标题】:switch videoview to fullscreen mode android 【发布时间】:2014-01-15 21:13:23 【问题描述】:

我想在用户按下全屏按钮时以全屏模式显示视频视图 我在互联网上搜索过,但我找到的所有解决方案都不能解决问题

这是我当前的代码,它也不起作用:

        public void setAnchorView(final View view) 
        super.setAnchorView(view);

        Button fullScreen = new Button(VideoDetails.this);
        fullScreen.setText("FullScreen");
        Log.e("media controller","Set anchorView");
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        params.setMargins(view.getWidth(), 0, 5, 20);
        params.gravity =  Gravity.RIGHT;
        addView(fullScreen, params);

        fullScreen.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View v) 
                 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics);
                 android.widget.FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) videoview.getLayoutParams();

                 params.leftMargin = 0;
                 videoview.setLayoutParams(params);



            
        );
            

这里是xml布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:background="#818181" >

<RelativeLayout
    android:id="@+id/video_details_header"
    android:layout_
    android:layout_
    android:layout_alignParentTop="true"
    android:background="#000000" >

    <TextView
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="12dp"
        android:clickable="true"
        android:onClick="returnback"
        android:text="Back"
        android:textColor="#ffffff" />

    <TextView
        android:id="@+id/video_details_text_header_center"
        android:layout_
        android:layout_
        android:layout_centerInParent="true"
        android:textColor="#ffffff" />
</RelativeLayout>

<ScrollView
    android:layout_
    android:layout_
    android:layout_below="@+id/video_details_header"
    android:layout_centerInParent="true" >

    <RelativeLayout
        android:id="@+id/layout_page"
        android:layout_
        android:layout_
        android:orientation="vertical" >

        <FrameLayout
            android:id="@+id/video_details_video"
            android:layout_
            android:layout_
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true" >

            <ImageView
                android:id="@+id/video_details_thumbnail"
                android:layout_
                android:layout_
                android:clickable="true"
                android:onClick="showvideo"
                android:padding="11dp"
                android:visibility="visible" />

            <VideoView
                android:id="@+id/video_details_videoView"
                android:layout_
                android:layout_
                android:layout_gravity="center"
                android:padding="11dp"
                android:visibility="gone" />
        </FrameLayout>

包含视频视图

你有什么想法

【问题讨论】:

你有没有找到全屏播放视频的解决方案 【参考方案1】:

设置布局参数后尝试requestLayout()调用

             ...
             params.leftMargin = 0;
             videoview.setLayoutParams(params);
             videoview.requestLayout();

【讨论】:

不幸的是,一些问题没有发生【参考方案2】:

也尝试改变视图的宽度:

    WindowManager wm = (WindowManager)videoview.getContext().getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    int displayWidth = display.getWidth();

    params.leftMargin = 0;
    params.width = displayWidth;
    videoview.setLayoutParams(params);
    videoview.requestLayout();

不确定,因为不能全部编码,但对我来说,您似乎根本不需要设置边距 您可以只使用视图的宽度和重力进行操作。

【讨论】:

是的,在您将屏幕上发生的所有其他控件的可见性更改为 View.GONE 之前,它应该不起作用。 id为@+id/video_details_video的FrameLayout的高度也应该改变。在我看来,使用自定义布局实现您自己的类会更好,从 ViewGroup 继承。【参考方案3】:

你可能忘记了这行代码让它适合全屏。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

【讨论】:

【参考方案4】:
DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics);
             android.widget.LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) videoView.getLayoutParams();
             params.width =  metrics.widthPixels;
             params.height = metrics.heightPixels;
             params.leftMargin = 0;
             videoView.setLayoutParams(params);

【讨论】:

以上是关于将videoview切换到全屏模式android的主要内容,如果未能解决你的问题,请参考以下文章

在Windows 10上将.NET Core控制台应用程序切换到全屏模式

ipad/iphone 视频没有切换到全屏模式

如何在 React Native youtube iframe 中切换到全屏(单击 YouTube 播放器 gui 上的全屏按钮旋转到横向)?

当页面视频全屏时,将 Webview2 切换到全屏

如何以编程方式将窗口从全屏切换到正常模式?

MPMoviePlayerController:无法从全屏切换到嵌入式