欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 播放視頻常見問題小結(jié)

 更新時(shí)間:2017年04月16日 10:36:38   作者:ahubenkui  
這篇文章主要介紹了Android 播放視頻常見問題小結(jié),需要的朋友可以參考下

在android 開發(fā)中常見到視頻播放的問題,在常規(guī)的視頻中 有直接用videoView + MediaController 或者 mediaController + serfercie holder

常見的問題

1 在播放中如何處理播放器的橫屏切換 和 播放器上的文案顯示的布局變化

在activity 中 設(shè)置

 android:configChanges="orientation|screenSize"

這樣在旋轉(zhuǎn)中,activity 就不會重建

重寫系統(tǒng)方法

public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
      initVideoLandLayout();
    } else {
      initVideoPortLayout();
    }
  }

通過 判斷 newConfig.orientation 來判斷 當(dāng)前是橫屏還是豎屏, 這個(gè)是在看視頻的過程中去判斷是不是橫屏還是豎屏,在我門一開始播放視頻的時(shí)候,也可以去判斷,具體的處理方法是

 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();
    }
  }

在具體變化播放器上的布局的時(shí)候我們可以動態(tài)的去更換

 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);
  }

這是橫屏處理

我門知道 系統(tǒng)的videoView 控件 自帶有播放,暫停 等進(jìn)度條這是MediaContronller 當(dāng)我們手點(diǎn)擊的時(shí)候 進(jìn)度條會顯示,手離開界面的時(shí)候,會不顯示,這是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();
    }
  }

最終調(diào)的是 mMediaController.hide(); 和 mMediaController.show(),

所以我門在自己的播放器界面要是實(shí)現(xiàn)自己的布局和播放器進(jìn)度條 重寫hide() 和 show() 方法即可

以上所述是小編給大家介紹的Android 播放視頻常見問題小結(jié),希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時(shí)回復(fù)大家的,在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論