我們一般都會用SurfaceView做預覽和播放,話不多說,直接上代碼清單文件中設置好代碼中實現onConfigurationChanged()方法
android:configChanges="orientation|screenSize
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//豎屏顯示 LayoutParams lp = mSurface.getLayoutParams(); lp.width = lp.MATCH_PARENT; lp.height = 680; mSurface.setLayoutParams(lp); } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//橫屏顯示 LayoutParams lp = mSurface.getLayoutParams(); lp.width = lp.MATCH_PARENT; lp.height =lp.MATCH_PARENT; mSurface.setLayoutParams(lp); }
通過判斷橫豎屏來設置surfaceView的寬高就可以了,有的需求是橫豎屏切換後要保持一定的比例,請看下面
DisplayMetrics dm = new DisplayMetrics(); if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.widthPixels; int screenHeigh = dm.heightPixels; LayoutParams lp = mSurface.getLayoutParams(); lp.width = screenWidth; lp.height = screenWidth * 9/16; mSurface.setLayoutParams(lp); } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.widthPixels; int screenHeigh = dm.heightPixels; LayoutParams lp = mSurface.getLayoutParams(); lp.width = screenHeigh*16/9; lp.height =screenHeigh; mSurface.setLayoutParams(lp); }
獲取手機系統的寬高,你想要什麼比例就按比例計算就可以了。