`

Android 监听屏幕旋转 onConfigurationChanged

 
阅读更多

注意:onConfigurationChanged事件并不是只有屏幕方向改变才可以触发,其他的一些系统设置改变也可以触发,比如打开或者隐藏键盘。

 

当我们的屏幕方向发生改变时,就可以触发onConfigurationChanged事件。我们要想当前的activity捕获这个事件,需要做以下这么几件事情。

第一:权限声明:

 

<uses-permission Android:name="android.permission.CHANGE_CONFIGURATION"></uses-permission>

 

API中说该权限允许我们改变配置信息,但是我们再改变屏幕方向的程序中却并没有用到该权限,是不是相互冲突了呢?这里我们可以这样认为,当我们声明该权限的的时候,系统允许我们通过重写activity中的onConfigurationChanged方法来捕获和修改某些配置信息。

 

第二:声明activity要捕获的事件类型,

 

 

[html] view plaincopyprint?

<activity android:name=".MainActivity" android:label="@string/app_name"

 android:configChanges="orientation|keyboard|keyboardHidden|screenSize">  

<!--  注意,这里configchange的属性少了也许onconfig方法就会调用不到,尤其是少了screenSize -->

            <intent-filter>  

                <action android:name="android.intent.action.MAIN" />  

                <category android:name="android.intent.category.LAUNCHER" />  

            </intent-filter>  

</activity>  

这里一定要声明Android:configChanges属性,该属性规定了我们可以在程序中捕获到的事件类型,多个事件类型用|分隔。

 

如果这里没有orientation,那么我们再程序中是无法捕获到屏幕改变的事件的。

 

第三:

 

重写Activity中的onConfigurationChanged方法

 

[java] view plaincopyprint?

package com.demo.android;  

  

import android.app.Activity;  

import android.content.res.Configuration;  

import android.os.Bundle;  

import android.widget.Toast;  

  

public class MainActivity extends Activity {  

      

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

    }  

  

    /** 

     * 屏幕旋转时调用此方法 

     */  

    @Override  

    public void onConfigurationChanged(Configuration newConfig) {  

        super.onConfigurationChanged(newConfig);  

        //newConfig.orientation获得当前屏幕状态是横向或者竖向   

        //Configuration.ORIENTATION_PORTRAIT 表示竖向   

        //Configuration.ORIENTATION_LANDSCAPE 表示横屏   

        if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){  

            Toast.makeText(MainActivity.this, "现在是竖屏", Toast.LENGTH_SHORT).show();  

        }  

        if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){  

            Toast.makeText(MainActivity.this, "现在是横屏", Toast.LENGTH_SHORT).show();  

        }  

    }  

}  

分享到:
评论

相关推荐

    Android屏幕旋转Demo

    在Android开发中,屏幕旋转是一个常见的需求,尤其在设计适应不同设备方向的应用时。本教程将深入探讨如何在Android中实现屏幕旋转,并通过一个名为"ScreenRotationDemo"的实例项目来展示具体步骤。 首先,我们需要...

    安卓监听屏幕的横竖翻转实现方法

    总的来说,监听Android屏幕的横竖翻转主要是通过在`AndroidManifest.xml`中配置Activity,然后在Activity中重写`onConfigurationChanged()`方法,利用`Configuration`对象的`orientation`属性来判断屏幕的方向。...

    Android屏幕旋转时Activity的生命周期

    在Android应用开发中,了解Activity的生命周期至关重要,尤其是在屏幕旋转这样的设备状态变化时。当用户在使用设备时,比如从竖屏切换到横屏,或者反之,系统会自动调用Activity的相关方法,来管理和恢复应用的状态...

    Android笔记之:onConfigurationChanged详解

    当 `onConfigurationChanged()` 被调用时,可以看到 `str` 的值在屏幕旋转时得到保留,这表明配置改变并未导致 `Activity` 的重新创建。若不指定 `android:configChanges`,每次屏幕旋转都会导致 `Activity` 重新...

    android 监听软键盘状态(弹起还是收起)

    屏幕旋转会导致布局高度改变,我们需要在`onConfigurationChanged()`方法中更新`rootHeight`,以确保在不同方向下都能正确判断键盘状态。 ```java @Override public void onConfigurationChanged(Configuration ...

    Android屏幕旋转适配

    在Android开发中,屏幕旋转适配是一个常见的需求,特别是在创建多设备兼容的应用时。当我们谈论“Android屏幕旋转适配”,主要是指如何使应用在不同屏幕方向(横屏或竖屏)下保持良好的用户体验和功能完整性。 ...

    Android屏幕旋转

    总之,Android屏幕旋转涉及多个方面,包括配置文件设置、传感器监听、动画设计、资源适配和状态管理等。开发者需要综合运用这些知识点,为用户提供流畅且一致的多方向使用体验。在实际开发中,应根据应用需求灵活...

    简单实例屏幕旋转(学习专用)

    屏幕旋转是Android应用开发中的一个常见功能,它涉及到设备方向的改变和用户界面的适配。在Android系统中,屏幕旋转可以通过系统设置手动触发,也可以由应用内的特定事件(如按钮点击)触发。本实例主要讲解如何实现...

    Android实现屏幕旋转方法总结

    在Android开发中,屏幕旋转是常见的用户交互行为,开发者需要考虑如何优雅地处理这一变化,以提供良好的用户体验。本文将详细介绍几种在Android中实现屏幕旋转的方法,并分析它们的优缺点。 1. **AndroidManifest....

    屏幕旋转180度 activity旋转180度 源代码

    在Android应用开发中,屏幕旋转是一个常见的需求,特别是在游戏或者多媒体应用中。本文将深入探讨如何实现Activity的180度旋转,同时提供相关的源代码参考。 首先,我们需要理解Android系统对屏幕方向的支持。...

    屏幕旋转时调用PopupWindowupdate方法更新位置失效的问题及解决方案.docx

    android:text="监听屏幕旋转并调用PopupWindow的update方法,发现如果ListView可见的时候,update方法不生效,ListView不可见的时候update生效"/&gt; android:id="@+id/anchor_button" android:layout_width="wrap...

    Android webview旋转屏幕导致页面重新加载问题解决办法

    - 当处理复杂的业务逻辑时,可能需要结合使用`onConfigurationChanged()`方法来监听屏幕配置的变化,从而避免Activity的销毁和重建。 总之,理解并正确处理Activity的生命周期以及Webview的状态管理是Android开发中...

    Demo_TestRotate-可运行,屏幕旋转的两个尝试

    在Android应用开发中,屏幕旋转是一个常见的功能需求,它涉及到用户界面(UI)的动态调整以适应不同方向的显示。本示例项目“Demo_TestRotate”包含两个不同的尝试,即“Demo_TestRotatesOne-master”和“Demo_...

    Android代码-MyRotation.zip

    总之,Android开发者需要了解如何适配屏幕旋转,包括使用`android:configChanges`、`onConfigurationChanged()`以及通过`ActivityInfo.SCREEN_ORIENTATION_*`常量来设定屏幕方向。"MyRotation.zip"的源代码应该能...

    安卓Android源码——(旋转关节).zip

    "安卓Android源码——(旋转关节).zip"这个压缩包可能包含了一个关于Android系统中处理屏幕旋转或者用户界面旋转的相关模块。在这个讨论中,我们将深入探讨Android系统如何处理屏幕旋转,涉及的知识点包括Android的...

    屏幕方向锁定后自动旋转

    需要在AndroidManifest.xml中对应的Activity标签中添加`android:configChanges="orientation|screenSize"`,然后在Activity中重写onConfigurationChanged()方法,在这里执行屏幕旋转的相关操作。 4. **自定义旋转...

    android exoplayer 自定义界面,播放器

    在Activity中,你需要重写`onConfigurationChanged`方法,确保ExoPlayer的布局和状态在屏幕旋转后得到正确恢复: ```java @Override public void onConfigurationChanged(Configuration newConfig) { super....

Global site tag (gtag.js) - Google Analytics