`
啸笑天
  • 浏览: 3466176 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

横竖屏切换时不销毁当前activity 和 锁定屏幕

阅读更多

首先在Mainifest.xml的Activity元素中加入android:configChanges="orientation|keyboardHidden"属性

<activityandroid:name=".FileBrowser"android:label="@string/app_name"android:configChanges="orientation|keyboardHidden">

<intent-filter>

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

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

</intent-filter>

</activity>

加入这条属性的含义是,应用程序将会处理屏幕方向和键盘状态(推出或合上)信息的改动。但对于其他的设备配置信息的改动则会由Android系统来处理(销毁当前Activity,然后重启一个新的Activity实例)。

那么,现在还需要在java代码的activity子类中加入配置信息改动的处理代码。这个也很简单

/**

* onConfigurationChanged

* the package:android.content.res.Configuration.

* @param newConfig, The new device configuration.

* 当设备配置信息有改动(比如屏幕方向的改变,实体键盘的推开或合上等)时,

* 并且如果此时有activity正在运行,系统会调用这个函数。

* 注意:onConfigurationChanged只会监测应用程序在AnroidMainifest.xml中通过

* android:configChanges="xxxx"指定的配置类型的改动;

* 而对于其他配置的更改,则系统会onDestroy()当前Activity,然后重启一个新的Activity实例。

*/

@Override publicvoid onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig); // 检测屏幕的方向:纵向或横向

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {

 //当前为横屏, 在此处添加额外的处理代码

else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {

//当前为竖屏, 在此处添加额外的处理代码

}

 //检测实体键盘的状态:推出或者合上

if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO){

//实体键盘处于推出状态,在此处添加额外的处理代码

else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES){

 //实体键盘处于合上状态,在此处添加额外的处理代码

}

}

别忘了在java文件中加上import android.content.res.Configuration

这样就OK了,屏幕方向改变时,应用程序的显示界面也会随着改动,而不是被销毁!

 

 

Activity中还有一属性和屏幕方向有关:

<activity . . . android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "sensor" | "nosensor"] . . . </activity>

比如,在Mainifest.xml的Activity元素中增加这么一个属性:

android:screenOrientation="portrait"

则无论手机如何变动,拥有这个属性的activity都将是竖屏显示。

android:screenOrientation="landscape",为横屏显示。

这里提一个小知识,Anroid模拟器中,快捷键"ctrl+F11"可以实现转屏。

 

 

感谢:http://hi.baidu.com/augustus_blog/blog/item/f41ab089462a6c0ac8fc7a04.html

分享到:
评论

相关推荐

    Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法

    本文实例讲述了Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法。分享给大家供大家参考,具体如下: 首先在Mainifest.xml的Activity元素中加入android:configChanges=”orientation|keyboardHidden...

    activity横竖屏切换时销毁的处理

    5. **防止Activity销毁**:除了在AndroidManifest.xml中声明处理配置变更,还可以使用`Activity.recreate()`手动触发Activity的销毁和重建,但这并不推荐用于处理横竖屏切换,因为它可能导致数据丢失。 6. **优化...

    Android 销毁当前的Activity

    需要注意的是,让 Android 横竖屏切换时不销毁当前的 Activity,并不意味着我们可以完全忽视屏幕方向的改变。我们仍然需要在 Java 代码中加入配置信息改动的处理代码,以便正确处理屏幕方向的改变。 另外,Activity...

    横竖屏切换Activity生命周期

    - **性能优化**:避免在`onCreate()`和`onStart()`中执行过多的初始化操作,因为这些方法在横竖屏切换时会被频繁调用。 - **布局适配**:为横屏和竖屏设计不同的布局资源,通过在res/layout目录下创建对应的layout-...

    安卓横竖屏幕切换

    如果不想在屏幕旋转时销毁并重建Activity,可以覆写`onConfigurationChanged()`方法,并在AndroidManifest.xml中为Activity添加`configChanges="orientation|screenSize"`,这样系统就不会默认销毁Activity,而是...

    surfaceview 支持横竖屏切换 视屏适配屏幕

    在处理视频播放时,特别是涉及横竖屏切换和屏幕适配时,开发者需要考虑多个关键点以确保良好的用户体验。 首先,SurfaceView在横竖屏切换时的处理至关重要。当设备旋转时,Android系统会销毁当前的Activity并重新...

    fragment横竖屏切换demo

    3. 设置Activity配置变更处理:在AndroidManifest.xml中,可以为对应的Activity设置`android:configChanges="orientation|screenSize"`属性,使得Activity在屏幕方向改变时不销毁重建,而是调用...

    Fragment的使用,隐藏显示以及androidPad横竖屏切换

    注意,hide()和show()并不销毁Fragment,只是控制它们在界面上的可见性。 在Android Pad上,横竖屏切换是一个常见的需求。默认情况下,当设备旋转时,系统会重新创建Activity和其中的所有Fragment,导致数据丢失。...

    【Android每周专题】横竖屏切换

    在Android开发中,横竖屏切换是一个常见的需求,尤其对于那些需要根据屏幕方向提供不同界面布局的应用来说。本文将深入探讨Android系统中的横竖屏切换机制,并通过"OrientationSwitchDemo"这个示例代码来帮助理解。 ...

    Android应用源码之(横竖屏切换处理-IT计算机-毕业设计.zip

    设置`android:configChanges="orientation"`或`android:configChanges="screenOrientation"`,当屏幕方向改变时,系统会调用`onConfigurationChanged(Configuration newConfig)`方法,让你在不销毁Activity的情况下...

    安卓Android源码——(横竖屏切换处理).rar

    - 避免不必要的重建:如果App的横竖屏切换不影响用户体验,可以在AndroidManifest.xml中禁止屏幕方向的自动切换。 - 使用Fragment:Fragment可以在Activity重建时保持其状态,减少数据丢失的风险。 - 调整UI设计...

    android横竖屏切换不重启activity解决方案

    在Android开发中,当应用程序的Activity在横竖屏之间切换时,系统默认行为是销毁当前Activity并重建,以便更新布局适应新的屏幕方向。这会导致`onCreate()`方法被再次调用,可能会造成用户体验上的中断。然而,有些...

    Android横竖屏切换处理Demo源码.rar

    在Android开发中,横竖屏切换是常见的场景,它涉及到应用程序界面布局的适应性和用户体验。这份"Android横竖屏切换处理Demo源码"提供了一个很好的学习示例,帮助开发者理解和处理这一问题。以下是对这个Demo源码中...

    android安卓横竖屏切换效果、webview加载以及生命周期监测

    在Android系统中,设备屏幕方向的改变会导致Activity被销毁并重新创建,这是因为默认情况下,Android将横竖屏切换视为配置更改。开发者可以通过在AndroidManifest.xml中对特定Activity设置`android:configChanges=...

    android动态创建fragment,横竖屏切换.

    这样,当横竖屏切换时,系统不会销毁Activity,而是调用这个方法。 - 使用`setRetainInstance(true)`方法来保留Fragment实例。在Fragment的生命周期中,当Activity重建时,只有Fragment的状态会保留,但请注意,这...

    Android应用源码之(横竖屏切换处理).zip

    1. **配置变更(Configuration Changes)**:横竖屏切换是Android系统中的一个配置变更,系统默认会销毁并重新创建Activity以适应新的屏幕方向。这可能导致性能开销,特别是当应用有复杂状态时。 2. **配置变更的...

    Android视频播放器(支持横竖屏切换)

    在Android平台上开发一款支持横竖屏切换的视频播放器是一项常见的任务,这涉及到对Android多媒体框架的深入理解和屏幕适配策略。"Android视频播放器(支持横竖屏切换)"这个项目的核心目标是创建一个能够根据设备...

    android横竖屏切换

    在Android开发中,横竖屏切换是一个常见的需求,它涉及到屏幕方向变化时应用程序的处理方式。本Demo旨在演示如何在Android应用中实现横竖屏的切换,并妥善处理屏幕旋转带来的影响。下面将详细介绍这个主题。 1. **...

    Android Activity嵌套Fragmnet实现横竖屏切换

    1. 使用`android:configChanges="orientation|screenSize"`属性,在AndroidManifest.xml中指定Activity对横竖屏变化的处理方式,让系统不再默认销毁Activity。 2. 在Activity中重写`onConfigurationChanged...

Global site tag (gtag.js) - Google Analytics