将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控制台应用程序切换到全屏模式
如何在 React Native youtube iframe 中切换到全屏(单击 YouTube 播放器 gui 上的全屏按钮旋转到横向)?