-1

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

EDIT#1:我的意思是这个方法在调用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)后不起作用

编辑#2:是的,onConfigurationChanged不是我需要的。相反,应该实现SensorEventListener接口并检查onSensorChanged事件。
完整的解决方案,取自获取手机方向但将屏幕方向固定为纵向

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"
4

1 回答 1

0

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

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

并覆盖方法

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

在你的活动课上。

于 2015-06-09T09:20:18.760 回答