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

首頁 > 系統 > Android > 正文

Android 播放視頻常見問題小結

2019-12-12 03:05:04
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昭觉县| 攀枝花市| 沂南县| 霍城县| 朝阳县| 西林县| 陵水| 碌曲县| 襄垣县| 黎城县| 高雄市| 乌拉特中旗| 剑河县| 全椒县| 比如县| 平定县| 西畴县| 察隅县| 浦东新区| 大化| 德化县| 稻城县| 九龙城区| 乌拉特前旗| 松潘县| 西宁市| 龙州县| 德昌县| 枝江市| 团风县| 黔西县| 宝应县| 赤城县| 宜兰市| 庐江县| 盐源县| 蕲春县| 马鞍山市| 湛江市| 确山县| 灵寿县|