繁体   English   中英

android - 如何在方向改变时完成活动?

[英]android - how to finish an activity when the orientation is changed?

如果用户在使用过程中改变方向,我想要做的是关闭Activity

我在清单中添加了以下行到此活动 -

android:configChanges="orientation"

而且我还覆盖onConfigurationChanged

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

但似乎它没有成功,所以我在这里做错了什么?

还要添加keyboardHidden 和screenSize。

android:configChanges="orientation|keyboardHidden|screenSize"

注意:screenSize 仅适用于您的应用程序以 API 13 级或更高级别为目标。

我不认为这种行为对用户有好处。 如果他们不小心旋转了设备,应用程序会立即关闭吗? 默认为横向的设备(某些平板电脑和 chromebook)呢? 用户会认为你的应用程序有问题并且已经崩溃。 或者如果他们不小心旋转了他们的设备,它是否会击中用户“游戏结束”的情况? (即。也许平衡他们的手机在他们的鼻子上?)

对于大多数应用程序的需求顺序:

  1. 让应用程序 function 在任何方向都很好。 通过将长时间运行的操作移动到后台线程并将 state 查看到 ViewModel 来确保它处理方向更改。
  2. 如果这是一个快速演示/示例,并且您有一个简短的任务,您不想中断并且不想投资将其正确移动到后台线程,请使用setRequestedOrientation ( SCREEN_ORIENTATION_LOCKED ),然后将其设置回SCREEN_ORIENTATION_SENSOR
  3. 将应用程序锁定为纵向。 :(不要这样做。
int a=3;

public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    if(a==3 || a==0)
    { 
      a=0;
    }else
{ finish(); }
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
    if(a==3 || a==1)
    { 
      a=0;
    }else
{ finish(); }
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM