实现横竖屏切换,第一步就是获取手机屏幕的高度和宽度,然后设置控件VideoView处于横屏或竖屏模式,再设置控件的高度和宽度就可以了。废话不多说,直接上代码,具体的解释也在代码中:

布局代码:

<LinearLayoutandroid:id="@+id/ll"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><VideoViewandroid:id="@+id/vv"android:layout_width="match_parent"android:layout_height="230dp"android:layout_gravity="center" />
</LinearLayout>

java代码:

class HengShu {/*是不是没见过这个单词,哈哈,你用拼音读一下试试*/WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);//获取手机屏幕的大小android.view.Display display = wm.getDefaultDisplay();final LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) vv   //这里的“vv”就是代表videoview.getLayoutParams(); // 取控当前的布局参数final int height_01 = display.getHeight();/*获取屏幕的高度,因为现在处于竖屏,所以现在获取的宽度和高度是竖屏的宽度和高度*/final int width_01 = display.getWidth();//获取屏幕的宽度
/*上面这几行就是在获取手机屏幕的高度和宽度,当然这里一开始是默认手机处于竖屏状态的,可以在一开始的
时候加入setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);来实现强制竖屏*/public void hengshu() {if (a) {/*这里的a是一个Boolean类型的变量,在前面我已经定义a为初始值位true了。这个a的用处就是一个标记的作用,如果手机处于横屏状态就记a为true,如果竖屏就记为false。(这招是不是很贱,哈哈)当然也可以在判断语句中判断视频是否处于横竖屏状态*/getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//横屏播放setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//强制手机屏幕横屏
/*因为横屏了,所以这个时候的高就是竖屏时候的宽,这个时候的宽就是竖屏时候的高*/layoutParams.height = width_01;layoutParams.width = height_01;vv.setLayoutParams(layoutParams); // 使设置好的布局参数应用到控件a = false;} else {getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//取消横屏setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //强制手机竖屏layoutParams.height = height_01;//设置当控件的高度layoutParams.width = width_01;//设置屏幕的宽度vv.setLayoutParams(layoutParams); // 使设置好的布局参数应用到控件           a = true;}}
}

以上就是横竖屏切换的主体,具体怎么把这个应该用到点击一个按钮,然后视频就横竖屏切换我就不解释啦,这个相信不会有太大难度。还有一种情况就是,手机旋转的时候,做一个横竖屏切换。在Android中有专门监听屏幕旋转的角度的。具体代码如下,同样具体解释也在代码中:

/*这里就不写具体代码啦,实际上也就把上面代码对应复制下来*/
mOrientationListener = new OrientationEventListener(this) {@Overridepublic void onOrientationChanged(int rotation) {        // 设置竖屏if (((rotation >= 0) && (rotation <= 30)) || (rotation >= 330)) {//rotation代表的是角度,这个时候代表的是竖屏}else if (rotation >= 230 && rotation <= 310) {//代表的是横屏,准确来说是正横屏} else if (rotation>60&&rotation<120){//也是横屏不过是反的横屏}
}

只要在对应的角度编辑对应的代码就可以了,相信有了前面的基础,编辑这个也不是什么难事。但是有一点要注意一下的就是正横屏和反横屏的区别,正横屏就是在正常竖屏的基础上向左旋转90°,反横屏就是在正常竖屏基础上向右旋转90°。当然也有正竖屏和反竖屏啦,不过反竖屏用的比较少而已。到这里你可能会疑惑了,正的横屏和正的竖屏前面的代码有介绍了怎么设置了,那反横屏和反竖屏要怎么设置?其实也很简单,只要在前面基础上改一行代码就可以了。比如,如果我要设置反横屏,就只要在横屏的基础上把

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

改为:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);

实际上就是把setRequestedOrientation里面的参数改了下而已。

同样要设置反竖屏,也是在竖屏的基础上把

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

改为

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); 

到这一个VideoView的横竖屏切换的功能基本上就能实现了。不过也别得意,想要同时实现按钮控制横竖屏以及屏幕旋转控制横竖屏的功能,里面的逻辑关系也不简单的,这里就给读者自己想吧,相信也能思考出来的。不过这里再给大家支个招,也是前面没说到的,就是如何判断当前屏幕是处于正横屏还是反横屏还是正竖屏还是反竖屏:

/*首先通过getRequestedOrientation()获取当前青木状态,然后再进行判断*/
//横屏正方向
if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){Toast.makeText(this,"横屏啦",Toast.LENGTH_SHORT).show();}
//横屏反方向else if (getRequestedOrientation() ==ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE){Toast.makeText(this,"反屏啦",Toast.LENGTH_SHORT).show();}
//纵屏正方向else if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){Toast.makeText(this,"竖屏啦",Toast.LENGTH_SHORT).show();}
//纵屏反方向else if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT){Toast.makeText(this,"反竖屏啦",Toast.LENGTH_SHORT).show();   }
/*在这里相信大家都发现了,“==”左边都是getRequestedOrientation(),“==”右边的实际上就是
setRequestedOrientation()里面的参数*/

Android实现横竖屏切换,以及手机横竖屏旋转的时候,实现横竖屏切换相关推荐

  1. 三星 android截屏快捷键,安卓手机怎么截图 各大品牌快捷键截屏大集合

    1三星手机快捷键截屏操作 同时按住三星手机的home键与电源开关键不动,等待1-2秒,界面就被截屏下来了. 2华为手机快捷键截屏操作 同时按住华为手机音量减键与电源开关键不动,等待1-2秒,界面就被截 ...

  2. 安卓设备互相投屏_安卓手机有什么好用的屏幕投屏软件可以推荐?

    现在市场上的投屏软件种类非常多,但基本上都必须保证连接的两个设备处在相同局域网环境下,也就是必须要求安卓手机和大屏电视必须连接同一个Wi-Fi,这也就给家里的路由器带来了很大挑战,常用投屏的朋友可能经 ...

  3. android 投屏mac,MAC投屏ipad、手机

    原标题:MAC投屏ipad.手机 MAC投屏ipad.手机 投屏向来都是小屏幕投屏到大屏幕,但是AWIND奇机根据用户需求,有专门开发设备的AP广播功能,也就是将电脑屏幕投屏到大屏幕的同时广播到移动设 ...

  4. android 投屏与反控,大屏也能反控手机了,type-c接口的无线投屏器带来的改变

    原标题:大屏也能反控手机了,type-c接口的无线投屏器带来的改变 大屏也能反控手机了,type-c接口的无线投屏器带来的改变 2020年9月中旬的时候,AWIND奇机type-c接口的无线投屏器隆重 ...

  5. android 录屏工具,安卓手机上最好的录屏软件在这里

    今天的这款软件真的是推荐,谁说只有电脑可以录屏,现在手机屏幕也可以录屏啦!最好用的录屏大师软件小编是找了很久今天才和大家分享的,纯属自己个人喜欢哦!想知道是什么软件的宝宝可以和小编一起往下看啦! 录屏 ...

  6. android 快速亮暗屏_Android设备闪屏怎么办?手机屏幕一会亮一会暗怎么办

    展开全部 闪屏问62616964757a686964616fe78988e69d8331333365646335题作为Android的一类常见问题,原因复杂多样.我们在这里整理一下如何分析闪屏问题,找 ...

  7. android 投影仪,不要购买投影仪, 安卓手机投屏很简单, 每个手机都可以

    先关注.后阅读,您的关注是小编最大的动力哟!动动小手指,给小编点一个小小的关注吧! 很多朋友都会表示自己的钱和工资都不够花,为什么是不够花呢?一方面是我们确实要供自己吃穿住行,另外一方面就是很多朋友在 ...

  8. Android O限制系统全屏进一步遏制手机勒索

    一.引言 近期谷歌发布了最新手机操作系统Android O的开发者预览版,一如往常,Android O又带来了多项新功能与优化升级,其中一项有关系统窗口管理的优化给Android手机勒索软件带来了严重 ...

  9. android手游直播怎么推流,安卓手机直播,Total Control手游投屏教程

    安卓手机直播,Total Control手游投屏教程 作者:小葫芦直播管家 来源:小葫芦 时间:2018-04-27 10:57 手游主播们,安卓手机投屏直播,你们都学会了吗? 是时候表演真正的技术了 ...

  10. android手机可以分屏么,安卓手机怎么分屏操作 安卓手机分屏操作设置教程

    相信很多朋友在用手机看视频或者玩游戏聊天以及参加一些应付考试等等的时候,都会想能不能同时打开多个界面,其实是可以的,只是因为很多时候手机的分屏功能没有被大家所重视,分屏操作支持大家同时打开多个界面,与 ...

最新文章

  1. web程序部署常见(404)错误
  2. 【jquery模仿net控件】简单的dropdownlist与datalist
  3. C语言实现数组Array(附完整源码)
  4. linux 命令-- touch
  5. 检验例题_高考必考|化学工艺流程之物质的分离提纯及检验鉴别,轻松拿分
  6. Flask爱家租房--房屋管理(获取主页幻灯片展示的房屋基本信息)
  7. jmeter生成html报告修改,Jmeter生成html报告(示例代码)
  8. vue树形权限菜单_Vue.js 递归组件实现树形菜单(实例分享)
  9. 蓝桥杯 ALGO-160 算法训练 P0104
  10. 黑客技术之加密你的磁盘
  11. selenium webdriver 通信过程
  12. 阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
  13. 天猫魔盒android开发者模式,【当贝市场】天猫魔盒M16S开启远程调试模式教程
  14. xhEditor用法-可视化HTML编辑器
  15. 假若明天来临——《AI.未来》读后感3900字
  16. 用友u8 如何配置文件服务器,用友u8服务器软件配置
  17. 值得推荐五个编程学习的网站
  18. 优秀的Web前端工程师需要具备什么?
  19. FPGA自学之路1(半加器和全加器的实现)
  20. Matlab获取tif各格点经纬度

热门文章

  1. 程序员的有个坏习惯!
  2. 我和后端因为接口吵起来啦,还列了 5 锅罪
  3. xbrowser连接Linux没有桌面,Windows下使用Xbrowser连接Centos 6.x自带的远程桌面
  4. 如何发布类Excel的管理软件
  5. 《系统之美》— 忒修斯悖论
  6. Android 版本号及对应的版本名
  7. C 程序设计语言——第七章练习题
  8. Vivado IP核之浮点数加减法 Floating-point
  9. 我的理想计算机系100字,我的理想作文100字
  10. matlab里面box on啥意思,image – Matlab图片中的Box on和axis坐标