国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 播放視頻常見問題小結

2019-10-23 18:31:17
字體:
來源:轉載
供稿:網友

在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 播放視頻常見問題小結,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的,在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德惠市| 鹤壁市| 蕉岭县| 宜川县| 五原县| 平罗县| 厦门市| 清河县| 宣化县| 化德县| 凤台县| 什邡市| 宜川县| 电白县| 九江市| 安徽省| 大悟县| 上杭县| 从江县| 封开县| 泽库县| 普兰店市| 东丽区| 金乡县| 中超| 漯河市| 光山县| 通海县| 手机| 兴仁县| 高阳县| 峨眉山市| 六枝特区| 威远县| 天台县| 阿图什市| 东至县| 海丰县| 大关县| 祁阳县| 玉屏|