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

news/2024/11/28 9:29:12/

我们一般都会用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);
}

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


http://www.ppmy.cn/news/676666.html

相关文章

三星S8原生android8.0,三星S8惧怕的全面屏机皇杀到,原生安卓8.0系统

原标题:三星S8惧怕的全面屏机皇杀到,原生安卓8.0系统 去年底的小米MIX带动了全面屏的兴起,而今年就是全面屏“元年”! 先有三星旗舰机皇S8打先锋,后有努比亚Z17耀世登场,更有安卓之父的Essential Phone围追…

galaxy s8 android pc,现在 你可以用三星S8解锁Win 10 PC了

Samsung Flow是一款可在设备之间实现无缝、安全连接体验的软件。用户可以通过智能手机对平板电脑/PC进行身份验证,在设备之间共享内容,将智能手机中的通知同步到平板电脑/PC。此外,还可以启用智能手机的热点,使平板电脑/PC保持连接…

三星s8是否支持html,真正的全面屏!国行三星S8终于支持导航栏隐藏

自从三星发布了Galaxy S8之后,就掀起来一股热潮。我们暂且不看 外观设计和性能配置,光凭那超高的全面屏设计,就足够让用户们为之追捧。毕竟国内手机市场中的智能手机已经逐渐的趋于同质化,不是我像你,就是你像我。唯一…

如何一秒将 iPhone 屏幕变成 S8

追随了 iPhone 很多年的你们,偶尔有没有羡慕过别的类型的安卓机捏!都听说了三星 Galaxy S8/S8 带来全新的“ Infinity Display ”,它为了给手机带来更强烈的观感,搞了一种“无边框、全正面、边到边”的显示屏,听起来是…

Windows11设置菜单栏(任务栏)位置居中或者靠左显示

前言 大家都知道Windows11最下面的任务栏是居中的,今天我升级了一下版本,重启之后发现任务栏跑左边了,我这种强迫症者直接破防。今天怎么说也得把它整回去。 当然如果你觉得居中很难受,想靠左展示,那么也可以按照此文…

做一套给三星手机用的导航栏图标(伪装Windows10移动版)

三星手机可以自定义导航栏logo,可以设置成各种形状。之前乐max发给我一套Windows10的logo,后来重置手机就找不到了。今天突发奇想自己去做一套。但是我也不会用ps,ai,也不想去装adobe全家桶,然后我突然想到了可以用vis…

制作投票链接小程序教程,让你的活动更具吸引力与效果

相信投票链接是一种方便快捷的投票方式,不仅可以用于活动中的投票,还可以用于品牌营销和市场调研。投票链接是一种非常方便的方式来进行在线投票。这里就推荐一个免费制作投票活动的网站:乔拓云,创建简单、免费使用、操作灵活。支…

常见存储引擎

TiKV 简介 TiKV 是一个分布式事务型的键值数据库,提供了满足 ACID 约束的分布式事务接口,并且通过Raft协议保证了多副本数据一致性以及高可用。TiKV 作为 TiDB 的存储层,为用户写入 TiDB 的数据提供了持久化以及读写服务,同时还存…