【发布时间】:2021-12-18 20:12:07
【问题描述】:
在尝试设置我的活动方向时,我遇到了一个不受欢迎的小影响:
我有两个活动:MainActivity 和 Activity2。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(v -> startActivity(new Intent(this, Activity2.class)));
}
}
public class Activity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
}
当我单击设备纵向的按钮(但以横向显示 MainActivity)时,它会以纵向加载 Activity2,并需要大约 1 秒才能旋转到横向。
如何避免这种情况并从一开始就以正确的方向加载 Activity2?
注意:这是一个简化的示例。无法在清单中设置方向,因为方向不是固定的并且取决于用户输入。
【问题讨论】:
-
整个Activity应该被销毁并从头开始重新创建,所以延迟不能再降低了。
-
这是一种罕见的行为,如果 MainActivity 不请求方向,则第二个 Activity 会立即在横向中直接加载。
-
@Addev Activity2 是否总是与 MainActivity 相同的方向?如果是这种情况,您可以使用 android:screenOrientation="locked" 到 Activity2 清单,它将方向锁定为其当前旋转(与 MainActivity 相同)。
标签: java android kotlin android-intent android-orientation