Android视频播放器实现小窗口和全屏状态切换:

Demo地址 (gitee)

1、针对全屏按钮添加以下方法:

controller.setFullScreenListener(new FullScreenListener() {@Overridepublic void onClick(View view) {// TODO: 2021/8/31 横竖屏切换Log.d("caowj", "横竖屏切换监听响应");int direction = getActivity(getContext()).getResources().getConfiguration().orientation;if (direction == Configuration.ORIENTATION_PORTRAIT) {Log.d("caowj", "当前竖屏");startFullScreen();} else if (direction == Configuration.ORIENTATION_LANDSCAPE) {Log.d("caowj", "当前横屏");exitFullScreen();} else {Log.d("caowj", "未处理的direction:" + direction);}}});
    public static Activity getActivity(Context context) {if (context == null) {return null;}if (context instanceof Activity) {return (Activity) context;} else if (context instanceof ContextWrapper) {return getActivity(((ContextWrapper) context).getBaseContext());}return null;}private void startFullScreen() {// 设置为横屏模式getActivity(getContext()).getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);getActivity(getContext()).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);// 切换全屏播放前当前VideoPlayerView的父容器ViewGroup viewGroup = (ViewGroup) this.getParent();viewGroup.removeView(this);LayoutParams lp = new LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);lp.setMargins(0, 0, 0, 0);viewGroup.addView(this, lp);}private void exitFullScreen() {// 设置为竖屏模式getActivity(getContext()).getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);getActivity(getContext()).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);// 切换全屏播放前当前VideoPlayerView的父容器ViewGroup viewGroup = (ViewGroup) this.getParent();viewGroup.removeView(this);LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);viewGroup.addView(this, lp);}

2、注意事项:

a、横竖屏切换方法需要放在自定义的播放器(PlayView)中,否则不生效;
b、Activity声明时添加以下配置,屏幕切换时不会重新执行onCreate方法:

android:configChanges=“orientation|keyboardHidden|screenSize”

参考:https://blog.csdn.net/u010072711/article/details/51517170

Android播放器实现横竖屏切换相关推荐

  1. Android基础篇 屏幕横竖屏切换(layout-land)下篇

    默认情况下Activity进行屏幕旋转会自动进行onDestroy并重新onCreate 一.非默认情况下 在AndroidManifest.xml的Activity中配置 <activitya ...

  2. Android 播放视频时横竖屏的调整

    我个人看视频的时候喜欢横屏看,这样视频图像显得还大,所以在做自己的播放器的时候默认就是横屏显示.这样在播放横屏录制的视频时没有问题,但是一旦播放竖屏录制的视频问题就大了,图像都是偏转90度的.这可怎么 ...

  3. android compose webview视频播放横竖屏切换

    先看演示 compose webview横竖屏切换 1.添加依赖: 文档 implementation "com.google.accompanist:accompanist-webview ...

  4. 解决Android手机 屏幕横竖屏切换

    Android中当屏幕横竖屏切换时,Activity的生命周期是重新加载(说明当前的Activity给销毁了,但又重新执行加载),怎么使屏幕横竖屏切换时,当前的Activity不销毁呢? 1. 在An ...

  5. Android 禁止横竖屏切换、设置横屏

    <activity android:name="com.bokecc.sdk.mobile.QuestionActivity.QuestionSingleChoiceActivity& ...

  6. widget中自动横竖屏切换时的问题

    首页 Android开发者社区 Android百科 极客学院 开启辅助访问 打卡签到 我要上头条 如何赚e币 注册验证问题 版主申请 切换到宽版 帐号 自动登录  找回密码 密码 登录  加入eoe ...

  7. Android杂谈--layout的横竖屏处理

    From:http://www.cnblogs.com/loulijun/archive/2011/12/22/2296505.html 一.layout-land和layout-prot的区别与使用 ...

  8. 视频播放如何横竖屏切换

    最近一直在做视频相关的项目,其中一个很重要的功能就是播放时的横竖屏切换,于是研究对比了下市场上主要视频类APP的横竖屏切换方式,共分为两种,一种以优酷视频和土豆视频为代表,当横放手机时整个界面都旋转了 ...

  9. Activity 在横竖屏切换情况下的生命周期变化

    title: Activity 在横竖屏切换情况下的生命周期变化 date: 2018-04-26 23:05:57 tags: [Activity] categories: [Mobile,Andr ...

  10. Compose 横竖屏切换时状态如何保存?rememberSaveable 实现原理分析

    前言 在这篇文章中提到了 Navigation 的状态保存实际是由 rememberSaveable 实现的,有同学反馈希望单独介绍一下 rememberSaveable 的功能及实现原理.我们都知道 ...

最新文章

  1. Linux的主要特性
  2. 深度解析ASP.NET2.0中的Callback机制
  3. windows 远程访问别人的linux下的ftp服务器,linux与windows之间使用ftp相互访问(CentOS提示ftp:command not found)...
  4. 科大讯飞ai研究院_科大讯飞1024开发者大会:让AI赋能行业数字化升级
  5. SAP Spartacus里的产品主数据显示的数据源
  6. 计算机理论专业研究生论文课题,计算机理论方向论文选题 计算机理论论文标题如何定...
  7. virsh 关机_kvm虚拟机不能使用virsh shutdownw命令关闭虚拟机的解决方法
  8. 对STL的string进行格式化输出
  9. mysql proxy yum_mysql 高可用架构 proxysql 之一 yum安装
  10. MySQL存储引擎:MyISAM InnoDB
  11. eclipse插件svn账号信息清空重新登陆
  12. docker 容器的常用命令及配置
  13. 【软件工程】系统约束
  14. 教务管理系统数据字典mysql_学校教务管理系统--数据库课程设计
  15. ADF中在jspx页面加载的阶段添加自己的代码
  16. ECMAScript6 Proxy和Reflect 对象操作拦截以及自定义
  17. 爬取淘宝网站的商品数据
  18. Css3实现背景毛玻璃效果
  19. 服务器灰度部署和原理
  20. TreeMap、二叉树

热门文章

  1. AutoCAD2014注册机使用说明
  2. 哈工大计算机保研面试专业课问题,[转载]哈工大保研面试
  3. IQ Questions
  4. Designing Network Design Spaces论文导读
  5. 【凯子哥带你学Framework】Activity启动过程全解析
  6. 统一社会信用代码校验和生成
  7. 携程2019校园秋招后台开发笔试题(Java)
  8. python tests in xxx问题
  9. 手机vnc连接云服务器,云服务器管理终端(VNC连接)说明
  10. #10015. 「一本通 1.2 练习 2」扩散 二分+并查集或Floyd