【问题标题】:How to receive onConfigurationChanged events (Android SDK)如何接收 onConfigurationChanged 事件(Android SDK)
【发布时间】:2015-06-09 19:01:18
【问题描述】:

目标是将屏幕布局固定为“横向”或“纵向”并继续接收旋转事件。 我知道 Activity 中的 onConfigurationChanged(Configuration newConfig) 但它不适用于固定布局。如何处理? 为了更清楚地解释,我想在 Android Camera 应用程序中实现类似的行为 - 仅旋转按钮图像但不重新加载活动并且不更改布局。

编辑#1: 我的意思是这个方法在调用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

后不起作用

编辑#2: 是的,onConfigurationChanged 不是我需要的。相反,应该实现 SensorEventListener 接口并检查 onSensorChanged 事件。
完整解决方案,取自Get phone orientation but fix screen orientation to portrait

public class MainActivity extends Activity implements SensorEventListener {
int orientation = -1;
@Override
public void onSensorChanged(SensorEvent event) {
    if (event.values[1] < 6.5 && event.values[1] > -6.5) {
        if (orientation != 1) {
        Toast toast = Toast.makeText(getApplicationContext(), "LANDSCAPE", Toast.LENGTH_SHORT); 
        toast.show(); 
    }
    orientation = 1;
    } else {
        if (orientation != 0) {
        Toast toast = Toast.makeText(getApplicationContext(), "PORTRAIT", Toast.LENGTH_SHORT); 
        toast.show(); 
        }
    orientation = 0;
    }
}

这与您的活动的此 AndroidManifest 设置相得益彰:

android:screenOrientation="landscape"

【问题讨论】:

  • “固定布局”是什么意思?通常在轮换更改时,您的活动会被破坏并重新创建。 activiy-s onCreate 应该处理“横向”或“纵向”。为什么需要处理 onConfigurationChanged ?
  • 我的意思是调用 setRequestedOrientation() 来修复横向或纵向布局。可能是我对这个 onConfigurationChanged 事件有误,应该选择另一种方法,但不知道怎么做?

标签: android layout onconfigurationchanged


【解决方案1】:

您必须在项目的清单文件中声明它-

    <activity
        android:name="your_activity_name"
        android:configChanges="orientation" >
    </activity>

并覆盖方法

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

在你的活动课上。

【讨论】:

  • 同样,它不适用于固定布局。例如,在调用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) 之后,您永远不会收到下一个 onConfigurationChanged 事件
猜你喜欢
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多