关于SurfaceView横竖屏切换显示问题

来源:互联网 发布:linux home空间 编辑:程序博客网 时间:2024/05/19 13:25

我们一般都会用SurfaceView做预览和播放,话不多说,直接上代码清单文件中设置好代码中实现onConfigurationChanged()方法

android:configChanges="orientation|screenSize

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

获取手机系统的宽高,你想要什么比例就按比例计算就可以了。

1 0