避免setRequestedOrientation延迟



我在尝试设置活动方向时遇到了一个小的不希望的影响:

我有两个活动: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?

注:这是一个简化的例子。由于方向不是固定的,并且取决于用户输入,因此无法在清单中设置方向。

找到了一种避免视觉效果的方法,但并不优雅。

通过声明

public class Activity2 extends AppCompatActivity {
...
}
public class Activity2Land extends Activity2 {
...
}

在清单中

<activity
android:name=".Activity2"
android:screenOrientation="portrait"
android:exported="false" />
<activity
android:name=".Activity2Land"
android:screenOrientation="landscape"
android:exported="false" />

你可以解决这个问题。但是,是的,如果你想支持反向和传感器定向,你需要声明很多活动。

有什么正确的解决方法吗?

相关内容

  • 没有找到相关文章

最新更新