Android 播放视频常见问题小结
程序员文章站
2023-01-21 09:26:26
在android 开发中常见到视频播放的问题,在常规的视频中 有直接用videoview + mediacontroller 或者 mediacontroller + se...
在android 开发中常见到视频播放的问题,在常规的视频中 有直接用videoview + mediacontroller 或者 mediacontroller + serfercie holder
常见的问题
1 在播放中如何处理播放器的横屏切换 和 播放器上的文案显示的布局变化
在activity 中 设置
android:configchanges="orientation|screensize"
这样在旋转中,activity 就不会重建
重写系统方法
public void onconfigurationchanged(configuration newconfig) { // todo auto-generated method stub super.onconfigurationchanged(newconfig); if (newconfig.orientation == configuration.orientation_landscape) { initvideolandlayout(); } else { initvideoportlayout(); } }
通过 判断 newconfig.orientation 来判断 当前是横屏还是竖屏, 这个是在看视频的过程中去判断是不是横屏还是竖屏,在我门一开始播放视频的时候,也可以去判断,具体的处理方法是
private void initvideoplayerlayout() { displaymetrics dm = new displaymetrics(); getwindowmanager().getdefaultdisplay().getmetrics(dm); width = dm.widthpixels; heigh = dm.heightpixels; if (width / heigh > 0) { // 横屏 initvideolandlayout(); fullscreen = true; } if (width / heigh == 0) { //竖屏 initvideoportlayout(); } }
在具体变化播放器上的布局的时候我们可以动态的去更换
private void initvideoportlayout() { relativelayout.layoutparams videolp = new relativelayout.layoutparams(relativelayout.layoutparams.match_parent, relativelayout.layoutparams.match_parent); videolp.addrule(relativelayout.center_in_parent); videoview.setlayoutparams(videolp); videoview.start(); relativelayout.layoutparams hotelinfolp = new relativelayout.layoutparams(deviceinfoutil.getpixelfromdip(200), deviceinfoutil.getpixelfromdip(55)); hotelinfolp.addrule(relativelayout.align_parent_bottom); hotelinfolp.addrule(relativelayout.align_parent_right); hotelinfolp.rightmargin = deviceinfoutil.getpixelfromdip(8); hotelinfolp.bottommargin = deviceinfoutil.getpixelfromdip(90); mhotelinfolayout.setlayoutparams(hotelinfolp); }
这是竖屏处理
private void initvideolandlayout() { relativelayout.layoutparams layoutparams = new relativelayout.layoutparams(relativelayout.layoutparams.fill_parent, relativelayout.layoutparams.fill_parent); layoutparams.addrule(relativelayout.align_parent_top); layoutparams.addrule(relativelayout.align_parent_left); layoutparams.addrule(relativelayout.align_parent_right); videoview.setlayoutparams(layoutparams); relativelayout.layoutparams hotelinfolp = new relativelayout.layoutparams(deviceinfoutil.getpixelfromdip(200), deviceinfoutil.getpixelfromdip(55)); hotelinfolp.addrule(relativelayout.align_parent_right); hotelinfolp.addrule(relativelayout.align_parent_bottom); hotelinfolp.rightmargin = deviceinfoutil.getpixelfromdip(8); hotelinfolp.bottommargin = deviceinfoutil.getpixelfromdip(95); mhotelinfolayout.setlayoutparams(hotelinfolp); }
这是横屏处理
我门知道 系统的videoview 控件 自带有播放,暂停 等进度条这是mediacontronller 当我们手点击的时候 进度条会显示,手离开界面的时候,会不显示,这是videoview 中的方法
@override public boolean ontouchevent(motionevent ev) { if (isinplaybackstate() && mmediacontroller != null) { togglemediacontrolsvisiblity(); } return false; }
再朝下看
private void togglemediacontrolsvisiblity() { if (mmediacontroller.isshowing()) { mmediacontroller.hide(); } else { mmediacontroller.show(); } }
最终调的是 mmediacontroller.hide(); 和 mmediacontroller.show(),
所以我门在自己的播放器界面要是实现自己的布局和播放器进度条 重写hide() 和 show() 方法即可
以上所述是小编给大家介绍的android 播放视频常见问题小结,希望对大家有所帮助
上一篇: jar命令详解
下一篇: 联想杨元庆:不打算做操作系统和芯片
推荐阅读
-
android使用surfaceview+MediaPlayer播放视频
-
android使用videoview播放视频
-
android之视频播放系统VideoView和自定义VideoView控件的应用
-
Android10开发者常见问题(小结)
-
HTML5中的音频和视频媒体播放元素小结
-
解决Android WebView拦截url,视频播放加载失败的问题
-
Android 播放视频常见问题小结
-
Android编程实现播放视频的方法示例
-
Android使用WebView实现全屏切换播放网页视频功能
-
Android VR Player(全景视频播放器)- ExoPlayer播放器MPEG-DASH视频播放