更改视图的方向并使其全屏显示
Changing a view's orientation and making it full screen
我正在做一个视频播放器应用程序,想添加全屏功能。目前我使用的布局类似于 youtube,我的视频正在 videoView
中播放,完全没问题。
我想切换此 videoView
的方向并拉伸它以使其全屏显示。
这是我尝试过的;
((ViewManager)VideoView.getParent()).removeView(VideoView);
frameLayout.addView(VideoView);
- 我用框架布局包裹了我的布局
- 我删除了我的“VideoView”并将其添加到框架布局
我只是取得了结果,但在这种情况下视频正在停止。就好像所有的 VideoView
都变得毫无用处。当我删除它时,它会尝试向死线程上的处理程序发送消息并停止工作。
我的问题是,
有什么方法可以在不删除视图的情况下更改视图的父级吗?
或者是否有更好的选择来使此视图全屏显示?
注意:这个VideoView的类型是Exo Media Video View,我用的是下面的库https://github.com/brianwernick/ExoMedia
经过深思熟虑,我找到了一个可行的解决方案。
- 取消所有其他视图
- 隐藏状态栏
基本上我写了这个功能结构
private void goFullScreen() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
makeAllGone();
}
private void outFullScreen(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
makeAllVisible();
}
private void makeAllGone(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
toolbar.setVisibility(View.GONE);
// make visibility gone for the rest of the views
}
private void makeAllVisible(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
toolbar.setVisibility(View.VISIBLE);
// make visibility visible for the rest of the view
}
我正在做一个视频播放器应用程序,想添加全屏功能。目前我使用的布局类似于 youtube,我的视频正在 videoView
中播放,完全没问题。
我想切换此 videoView
的方向并拉伸它以使其全屏显示。
这是我尝试过的;
((ViewManager)VideoView.getParent()).removeView(VideoView);
frameLayout.addView(VideoView);
- 我用框架布局包裹了我的布局
- 我删除了我的“VideoView”并将其添加到框架布局
我只是取得了结果,但在这种情况下视频正在停止。就好像所有的 VideoView
都变得毫无用处。当我删除它时,它会尝试向死线程上的处理程序发送消息并停止工作。
我的问题是,
有什么方法可以在不删除视图的情况下更改视图的父级吗? 或者是否有更好的选择来使此视图全屏显示?
注意:这个VideoView的类型是Exo Media Video View,我用的是下面的库https://github.com/brianwernick/ExoMedia
经过深思熟虑,我找到了一个可行的解决方案。
- 取消所有其他视图
- 隐藏状态栏
基本上我写了这个功能结构
private void goFullScreen() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
makeAllGone();
}
private void outFullScreen(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
makeAllVisible();
}
private void makeAllGone(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
toolbar.setVisibility(View.GONE);
// make visibility gone for the rest of the views
}
private void makeAllVisible(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
toolbar.setVisibility(View.VISIBLE);
// make visibility visible for the rest of the view
}