gpt4 book ai didi

java - Android 上的 Activity 方向会自动更改

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:17 26 4
gpt4 key购买 nike

我正在使用 minSdkVersion=15 开发基于 Android 的移动应用程序。我想支持平板电脑的两种方向,而只支持智能手机的纵向。一切都像一个魅力,但我遇到了一个让我发疯的小错误。当智能手机处于横向模式并且我尝试触发一个新的 Activity 时,它会以横向模式打开一段时间,然后自动旋转为纵向。我的每个 Activity 都扩展了一个 GeneralActivity 类:

public class GeneralActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// If smartphone lock orientation to portrait
if (!Helper.isTablet(this.getApplicationContext())){
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
}

我检测到具有此功能的平板电脑:

public class Helper {
public static boolean isTablet(Context context){
Configuration config = context.getResources().getConfiguration()
return config.smallestScreenWidthDp >= 600;
}
}

我选择不在 Manifest.xml 中指定 android:screenOrientation,因为这样我就能够支持平板电脑的所有界面方向。我错过了什么吗?

编辑

我决定应用 Jonathan 在回答中建议的最佳实践,但我描述的问题仍然存在。这是我在 github 上的 repo 协议(protocol):https://github.com/giacmarangoni/Android-Orientation-Test

最佳答案

我在 Android N & O 上遇到了同样的问题并找到了解决方案。

我仍然在 onCreate 方法中使用 setRequestedOrientation,但我已经为 list 中的每个 Activity 添加了它:

android:screenOrientation="behind"

这确保 Activity 以与前一个 Activity 相同的方向启动。之后的 setRequestedOrientation 将覆盖它,但如果它与之前的 Activity 相同,您作为用户看不到任何变化。

关于java - Android 上的 Activity 方向会自动更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42936007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com