目标是将屏幕布局固定为“横向”或“纵向”,并继续接收旋转事件。 我知道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"
答案 0 :(得分:0)
您必须在项目的清单文件中声明它 -
<activity
android:name="your_activity_name"
android:configChanges="orientation" >
</activity>
并覆盖方法
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
在您的活动课程中。