Android获取横竖屏状态及监听

简介: Android获取横竖屏状态及监听

以下提供获取Android设备横竖屏状态方法

    /**
     * 获取当前屏幕是否是横屏(默认)
     *
     * @param context
     * @return
     */
    public static boolean isCurOriLand(Context context) {
        boolean isLand = true;
        try {
            Configuration mConfiguration = context.getResources().getConfiguration(); //获取设置的配置信息
            int ori = mConfiguration.orientation; //获取屏幕方向
            if (ori == mConfiguration.ORIENTATION_LANDSCAPE) {
                //横屏
                isLand = true;
            } else if (ori == mConfiguration.ORIENTATION_PORTRAIT) {
                //竖屏
                isLand = false;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return isLand;
    }

 

偶然在项目中用到播放视频时,需要横屏将视频全屏播放,所以需要监听屏幕的横竖屏切换事件。

ConfigChanges,用于捕获手机状态的改变,当横竖屏切换,屏幕尺寸变化,弹出键盘,系统设置改变等条件,就会触发回调事件onConfigurationChanged。让Activity捕捉到该事件,需要做如下步骤:

  1. 声明Activity需要捕捉的事件类型,在manifest的配置:
        <activity android:name=".MainActivity"
            android:configChanges="orientation|keyboard|layoutDirection|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

configChanges配置参数说明:

“mcc“ 移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。

“mnc“ 移动网号,在一个国家或者地区中,用于区分手机用户的服务商。

“locale“ 所在地区发生变化。

“touchscreen“ 触摸屏已经改变。

“keyboard“ 键盘模式发生变化,例如:用户接入外部

  1. 重写Activity中的onConfigurationChanged方法,加上自己的处理事件。
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
 
        if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
            Toast.makeText(getApplicationContext(), "横屏", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(), "竖屏", Toast.LENGTH_SHORT).show();
        }
    }

Configuration.ORIENTATION_LANDSCAPE 横屏

Configuration.ORIENTATION_PORTRAIT 竖屏

另外:

  • 不设置activity的android:configChanges属性时,切换横竖屏会调用各个生命周期方法,横屏调一次,竖屏调用2次
  • 设置activity的android:configChanges="orientation“属性时,切换横竖屏会调用各个生命周期方法,横屏调一次,竖屏调用1次
  • 设置activity的android:configChanges="orientation|keyboardHidden"时,切换横竖屏不会调用各个生命周期方法,只会执行onConfigurationChanged方法
目录
相关文章
|
3天前
|
Android开发
Android监听USB设备插拔
Android监听USB设备插拔
17 7
|
4天前
|
Android开发
Android监听蓝牙广播
Android监听蓝牙广播
13 1
|
4天前
|
Android开发
Android 对鼠标事件的监听实现
Android 对鼠标事件的监听实现
14 1
|
5月前
|
小程序 JavaScript 前端开发
微信小程序(十七)小程序监听返回键跳转事件(安卓返回也适用)
onUnload:function(){ wx.redirectTo({ url: '../index/index' }) wx.navigateTo({ url: '../index/index' }) wx.switchTab({ url: '../../member/member' }) }
364 0
|
9月前
|
XML Android开发 数据格式
Android 基于监听的事件处理机制详解
Android 基于监听的事件处理机制详解
64 0
|
11月前
|
XML Java Android开发
Android 实现按钮监听的几种方式
Android 实现按钮监听的几种方式
|
11月前
|
Android开发
Android自定义支持滑动监听View
Android自定义支持滑动监听View
342 0
|
11月前
|
存储 Android开发 开发者
关于安卓媒体资源变动监听(ContentResolver)应用
关于安卓媒体资源变动监听(ContentResolver)应用
186 0
|
XML Java Android开发
Android 监听键盘输入(实现搜索、发送、完成等等)
在Android App的实际开发中,时常会需要监听软键盘的输入事件。 所以个人在此进行一个总结。 例如:微信和QQ聊天的消息发送,你会发现他的聊天框并没有发送的控件,软键盘的换行或者某个按钮会变成发送;在某些浏览器的输入框,输入内容后,软件盘的某个按钮会有搜索的字样,还有填写内容时的完成按钮等等,这些都可以通过监听键盘和输入框的一些配置实现这些功能。
|
Android开发
Android 修改系统屏幕亮度及监听
Android 修改系统屏幕亮度及监听
565 0
Android 修改系统屏幕亮度及监听