zoukankan      html  css  js  c++  java
  • 028、动态更改屏幕方向及捕捉屏幕改变事件

    1、动态改变屏幕方向
    在Android中,通过setRequestedOrientation()方法更改屏幕方向,通过getRequestedOrientation()方法获取屏幕方向
    注意,要在AndroidManifest.xml文件中,添加android:screenOrientation="portrait",可添加在Activity下。
    方法一,根据getRequestedOrientation()判断当前屏幕显示方向,代码如下:
                    switch (getRequestedOrientation()) {
                    case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE://当前横屏,转为竖屏
                        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                        break;
                    case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT://当前竖屏,转为横屏
                        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                        break;
                    default:
                        Toast.makeText(MainActivity.this, "getRequestedOrientation()="+getRequestedOrientation(), 0).show();
                        break;
                    }

      

    方法二,更加屏幕宽高比判断方向,代码如下:
            final Display display = getWindow().getWindowManager().getDefaultDisplay();
     
                    if(display.getWidth()>display.getHeight()){
                        //当前横屏,转为竖屏
                        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    }else{
                        //当前竖屏,转为横屏
                        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                    }
                }
    2、捕获屏幕改变事件:
    在AndroidManifest.xml文件中,需要添加权限
     <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>

     

    在对应Activity节点中添加android:configChanges="orientation|keyboard"
    java代码如下:
    复写onConfigurationChanged方法
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            switch (newConfig.orientation) {
            case Configuration.ORIENTATION_LANDSCAPE:
                bt.setText("旋转为竖屏");
                break;
            case Configuration.ORIENTATION_PORTRAIT:
                bt.setText("旋转为横屏");
                break;
            }
        }
     
  • 相关阅读:
    C#代码常用技巧
    MVC
    json类型
    android 上传二进制文件的两种方式
    BroadcastReceiver 使用goAsync 执行异步操作
    android组件间通信又一种方式
    Android BLE基础框架使用详解
    Android BLE设备蓝牙通信框架BluetoothKit
    android studio ndk开发总结
    jni c基础总结
  • 原文地址:https://www.cnblogs.com/zyh-blog/p/3343691.html
Copyright © 2011-2022 走看看