在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 播放视频常见问题小结,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对脚本之家网站的支持!

更多相关文章

  1. Android(安卓)Studio 四大组件之 Service的生命周期上
  2. Android在onCreate()方法中动态获取TextView控件的高度
  3. Android两种不同的方法去实现图像的放大与缩小
  4. 【Android】布局
  5. Android(安卓)setContentView方法解析(二)
  6. camera的startpreview流程
  7. 简述Android(安卓)Android(安卓)studio快捷键
  8. Android前台服务 音乐播放器 前台服务
  9. Android(安卓)TextView 添加下划线的简单方法

随机推荐

  1. android json实现网络请求 和普通的http
  2. Android屏幕元素层次结构
  3. Android(安卓)Scroller简单用法
  4. android 5.0新特性
  5. Android之简易天气预报小应用(xml解析练手
  6. duplicate files during packaging of ap
  7. Android系统启动
  8. Android中的广播也定向
  9. 实现android启动界面字体的动画效果
  10. 初窥图像处理利器RenderScript