我们一般都会用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); }
获取手机系统的宽高,你想要什么比例就按比例计算就可以了。