就如上次所说的,如果改变了系统屏幕的设置方向,我们不妨可以这么认为,它算是一个触发事件的开始吧,那么假使有人触发了这个事件,我们是否能够直接进行 某些操作呢,如改变界面的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>
分享到:
相关推荐
在Android开发中,`onConfigurationChanged` 是一个关键的生命周期方法,用于处理应用程序在运行时因设备配置改变而触发的事件。系统配置包括但不限于屏幕方向(横屏或竖屏)、语言选择、键盘可用性等。当这些配置...
Android系统通过`Configuration`对象来存储这些信息,当这些配置项改变时,系统会发送一个` Configuration`对象的更新通知。 2. **默认处理方式**: 默认情况下,当屏幕配置发生改变时,Android会销毁当前运行的...
我们仍然需要使用 `android:configChanges` 属性和 `onConfigurationChanged` 方法来正确处理屏幕方向的改变。 让 Android 横竖屏切换时不销毁当前的 Activity 需要使用 `android:configChanges` 属性和 `...
### Android的事件处理机制 #### 一、概述 在Android应用开发中,用户与界面的交互至关重要。良好的用户体验往往依赖于应用对用户操作快速而准确的响应。这背后的核心技术便是**事件处理机制**。本文将详细介绍...
重写`onConfigurationChanged`方法并设置`configChanges`属性,可以在不重启Activity的情况下处理这些变化: ```xml <activity android:name=".YourActivity" android:configChanges="orientation|screenSize"> `...
使用`android:configChanges="orientation|screenSize"`在`AndroidManifest.xml`中声明屏幕配置变化,然后在`onConfigurationChanged()`方法中处理横竖屏的转换。 3. **横竖屏切换逻辑**:在横竖屏切换时,视频播放...
Android系统通过`Resources`对象来获取设备的配置信息,包括屏幕方向。当这些配置发生变化时,系统会通知应用。开发者可以在`AndroidManifest.xml`中针对特定的`configChanges`进行处理,比如设置`android:...
1. **在`AndroidManifest.xml`中设置`configChanges`属性**:通过添加`configChanges="orientation|keyboardHidden"`属性,可以告诉Android系统,该Activity可以处理配置变化而不重启,从而避免`onCreate()`的重复...
为了防止频繁重建活动,可以将`android:configChanges="orientation|screenSize"`添加到AndroidManifest.xml中的活动声明,然后在活动中重写`onConfigurationChanged()`,在这里处理相机和视频录制的旋转逻辑。...
对于横竖屏切换,我们可以通过在`AndroidManifest.xml`中为扫描Activity添加`android:configChanges="orientation|screenSize"`,并覆盖`onConfigurationChanged`方法,避免Activity被重新创建,保证扫描过程的连续...
为了支持横竖屏切换而不出现显示问题,我们需要在清单文件中的标签内添加`android:configChanges="orientation|screenSize"`属性,这样当设备方向改变时,系统会调用Activity的onConfigurationChanged()方法而不是...
- 重写配置处理:通过在Manifest中对Activity设置`android:configChanges="orientation|screenSize"`,然后在Activity中重写`onConfigurationChanged(Configuration newConfig)`方法,这样切换横竖屏时,Activity...
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 ...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...
- **onConfigurationChanged()**:开发者可以通过在`AndroidManifest.xml`中为Activity指定`android:configChanges`属性,来选择性地处理特定的配置变更,而不是让系统默认重建Activity。然后在Activity中重写`...
在Android系统中,状态栏和导航栏是用户界面的重要组成部分,它们提供了系统信息以及应用程序的控制。在Android 7.1(API级别25)中,开发者可以通过编程方式实现状态栏和导航栏的隐藏与显示,以达到更沉浸式的用户...
为了平滑过渡并处理重建,你需要在Activity中重写`onSaveInstanceState()`和`onRestoreInstanceState()`方法来保存和恢复数据。 同时,为了检测屏幕方向的改变,可以注册一个BroadcastReceiver监听`ACTION_...
在Android应用开发中,创建一个原生的登录界面是至关重要的,它为用户提供了一种安全且用户...这个项目的源码分析可以深入理解Android原生界面设计和交互,以及如何处理横竖屏转换,是学习Android应用开发的好例子。