如何接收onConfigurationChanged事件(Android SDK)

时间:2015-06-09 09:10:33

标签: android layout onconfigurationchanged

目标是将屏幕布局固定为“横向”或“纵向”,并继续接收旋转事件。 我知道Activity中的 onConfigurationChanged (配置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"

1 个答案:

答案 0 :(得分:0)

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

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

并覆盖方法

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

在您的活动课程中。