`
昔雪似花
  • 浏览: 204681 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android onConfigurationChanged信息处理

阅读更多
就如上次所说的,如果改变了系统屏幕的设置方向,我们不妨可以这么认为,它算是一个触发事件的开始吧,那么假使有人触发了这个事件,我们是否能够直接进行 某些操作呢,如改变界面的UI等?当然不行,因为上面的范例,我们直接是借助setRequestedOrientation这个方法设置的,而在这个方 法中无法实现其他的操作。

   android中,我们借助的是另外一个事件——onConfigerationChanged,这个方法也是能够重写的。

     示范代码功能很简单,就是在改变屏幕的方向的同时,也改变了点击按钮的text:

  package com.mobile.allove.wfp;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class onConfigurationChangedTest extends Activity implements OnClickListener{
private Button mButton;
int intCurrentOrientation;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

this.Init();
mButton.setOnClickListener(this);
}

public void Init()
{
mButton=(Button) this.findViewById(R.id.Button01);
intCurrentOrientation=this.getRequestedOrientation();
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.Button01:
if(this.intCurrentOrientation==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
{
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}  
else if(this.intCurrentOrientation==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
{
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}  
break;
}
}

@Override
public void setRequestedOrientation(int requestedOrientation) {
// TODO Auto-generated method stub
super.setRequestedOrientation(requestedOrientation);
}
@Override
public int getRequestedOrientation() {
// TODO Auto-generated method stub
return super.getRequestedOrientation();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT)
{  
mButton.setText("现在是竖屏");
System.out.println("435435435456454");
}

if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE)
{
mButton.setText("现在是横屏");
System.out.println("kjkjhugggtvg");
}

super.onConfigurationChanged(newConfig);
}
}

这里需要注意几点,就是首先要设置初始的Orientation,而且还要设置捕捉更改的权限—— Android.permission.CHANGE_CONFIGURATION,还有一点,就是必须在Activity里设置 configChanges属性。这里我们不妨理解为声明!!为了好理解,我也把AndroidManifest.xml文件贴在这里了

   AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mobile.allove.wfp" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".onConfigurationChangedTest"
android:label="@string/app_name" android:screenOrientation="portrait"
android:configChanges="orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"></uses-permission>
</manifest>
分享到:
评论

相关推荐

    系统设置更改事件onConfigurationChanged 信息处理

    在Android开发中,`onConfigurationChanged` 是一个关键的生命周期方法,用于处理应用程序在运行时因设备配置改变而触发的事件。系统配置包括但不限于屏幕方向(横屏或竖屏)、语言选择、键盘可用性等。当这些配置...

    Android屏幕旋转

    Android系统通过`Configuration`对象来存储这些信息,当这些配置项改变时,系统会发送一个` Configuration`对象的更新通知。 2. **默认处理方式**: 默认情况下,当屏幕配置发生改变时,Android会销毁当前运行的...

    Android 销毁当前的Activity

    我们仍然需要使用 `android:configChanges` 属性和 `onConfigurationChanged` 方法来正确处理屏幕方向的改变。 让 Android 横竖屏切换时不销毁当前的 Activity 需要使用 `android:configChanges` 属性和 `...

    Android的事件处理机制

    ### Android的事件处理机制 #### 一、概述 在Android应用开发中,用户与界面的交互至关重要。良好的用户体验往往依赖于应用对用户操作快速而准确的响应。这背后的核心技术便是**事件处理机制**。本文将详细介绍...

    Android-获取Android当前设备尺寸信息减少适配时的烦恼

    重写`onConfigurationChanged`方法并设置`configChanges`属性,可以在不重启Activity的情况下处理这些变化: ```xml &lt;activity android:name=".YourActivity" android:configChanges="orientation|screenSize"&gt; `...

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

    使用`android:configChanges="orientation|screenSize"`在`AndroidManifest.xml`中声明屏幕配置变化,然后在`onConfigurationChanged()`方法中处理横竖屏的转换。 3. **横竖屏切换逻辑**:在横竖屏切换时,视频播放...

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

    Android系统通过`Resources`对象来获取设备的配置信息,包括屏幕方向。当这些配置发生变化时,系统会通知应用。开发者可以在`AndroidManifest.xml`中针对特定的`configChanges`进行处理,比如设置`android:...

    android 自适应屏幕翻转

    1. **在`AndroidManifest.xml`中设置`configChanges`属性**:通过添加`configChanges="orientation|keyboardHidden"`属性,可以告诉Android系统,该Activity可以处理配置变化而不重启,从而避免`onCreate()`的重复...

    android 摄像头、视频录制demo (竖屏)

    为了防止频繁重建活动,可以将`android:configChanges="orientation|screenSize"`添加到AndroidManifest.xml中的活动声明,然后在活动中重写`onConfigurationChanged()`,在这里处理相机和视频录制的旋转逻辑。...

    Android 二维码扫描Demo

    对于横竖屏切换,我们可以通过在`AndroidManifest.xml`中为扫描Activity添加`android:configChanges="orientation|screenSize"`,并覆盖`onConfigurationChanged`方法,避免Activity被重新创建,保证扫描过程的连续...

    Android修改用户头像

    为了支持横竖屏切换而不出现显示问题,我们需要在清单文件中的标签内添加`android:configChanges="orientation|screenSize"`属性,这样当设备方向改变时,系统会调用Activity的onConfigurationChanged()方法而不是...

    android横竖屏

    - 重写配置处理:通过在Manifest中对Activity设置`android:configChanges="orientation|screenSize"`,然后在Activity中重写`onConfigurationChanged(Configuration newConfig)`方法,这样切换横竖屏时,Activity...

    疯狂Android讲义源码

     3.1 Android的事件处理 145  3.2 基于监听的事件处理 145  3.2.1 事件监听的处理模型 145  3.2.2 事件和事件监听器 148  3.2.3 内部类作为事件监听器类 151  3.2.4 外部类作为事件监听器类 152  3.2.5 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...

    Android应用源码之Configuration.zip

    - **onConfigurationChanged()**:开发者可以通过在`AndroidManifest.xml`中为Activity指定`android:configChanges`属性,来选择性地处理特定的配置变更,而不是让系统默认重建Activity。然后在Activity中重写`...

    android7 隐藏状态栏功能代码

    在Android系统中,状态栏和导航栏是用户界面的重要组成部分,它们提供了系统信息以及应用程序的控制。在Android 7.1(API级别25)中,开发者可以通过编程方式实现状态栏和导航栏的隐藏与显示,以达到更沉浸式的用户...

    Android 简单例子:横屏 竖屏切换.rar

    为了平滑过渡并处理重建,你需要在Activity中重写`onSaveInstanceState()`和`onRestoreInstanceState()`方法来保存和恢复数据。 同时,为了检测屏幕方向的改变,可以注册一个BroadcastReceiver监听`ACTION_...

    Android原生登陆界面

    在Android应用开发中,创建一个原生的登录界面是至关重要的,它为用户提供了一种安全且用户...这个项目的源码分析可以深入理解Android原生界面设计和交互,以及如何处理横竖屏转换,是学习Android应用开发的好例子。

Global site tag (gtag.js) - Google Analytics