在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 播放视频常见问题小结,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的Android 播放视频常见问题小结全部内容,希望文章能够帮你解决Android 播放视频常见问题小结所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)