时间:2021-05-21
在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 播放视频常见问题小结,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最近使用呆呆播放器看视频,总是遇到各种用不了的问题。今天小编就把自己在网上找到的各种常见问题以及解决方法介绍给大家,需要的朋友可以一起看看软件名称:呆呆播放器i
火山是不能取消实名认证的,其操作方法如下: 1、点击登录火山小视频,进入个人中心选择“火力”功能,从下方找到并且点击“常见问题”选项。 2、进入到“常见问题
下面介绍如何让层显示在FLASH之上的方法。 具体页面代码:blueideaweb标准常见问题大全web标准常见问题大全web标准常见问题大全we
下面介绍LI中内容超过长度后以省略号显示的方法。 具体页面代码:blueideaweb标准常见问题大全web标准常见问题大全web标准常见问题大全
本文实例讲述了Android播放assets文件里视频文件相关问题。分享给大家供大家参考,具体如下:今天做了一个功能,就是播放项目工程里面的视频文件,不是播放S