将方向锁定为纵向或横向很简单。
<activity android:name=".MyActivity"
android:screenOrientation="portrait">
或在屏幕旋转时捕捉:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
但是如何在旋转事件发生前捕获?如果方向改变,我想控制布局上发生的事情,覆盖实际旋转屏幕的默认行为。有可能吗?
答案 0 :(得分:2)
在onPause()方法中使用这段代码。当rotatio改变时,activty重新构造它自己,这意味着再次调用on-Create,之前的活动是finish();
int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE){
if (display.getRotation() == Surface.ROTATION_0)
// play with different angles e.g ROTATION_90, ROTATION_180
}
因此,当旋转发生变化时,将调用之前的活动的onPause(),并且在该阶段您可以通过新的方向决定您想要的内容。
答案 1 :(得分:0)
通过setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
onCreate(..)
强制活动保持一种模式(例如风景)
附加您自己的方向监听器,
orientationEventListener = new OrientationEventListener(this,SensorManager.SENSOR_DELAY_UI){
@Override
public void onOrientationChanged(int orientation) {
if (Math.abs(orientation - 90) < 30){
// your device orientation has changed, you can update UI accordingly, (layout won't rotate).
}
};
orientationEventListener.enable();
请记住,如果你这样做,你会收到x&amp;当您放弃配置更改时,y轴的触摸事件“反转”。此外,如果您有一个导航栏,它将保持原样,也不会旋转!