我正在开发一个应用程序,我需要在不同方向上提供不同活动的背景图像.所以我以这种方式接近:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setLanguage();
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
// set background for landscape
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
// set background for portrait
}
}
和
android:configChanges="locale|orientation|screenSize"
并且在onCreate()中我将背景图像设置为肖像,假设用户将启动处于纵向模式的应用程序.
一切正常,因为用户更改模式,设置相应的背景等等.
但是,如果用户在手机处于横向模式时启动此应用程序,则会在用户以纵向模式启动应用程序之前显示第一次启动时的肖像图像.
那么我该如何解决这个问题呢?在一句话中,为不同方向设置不同背景图像的最佳方法是什么?我是在正确的轨道吗?
解决方法:
在onCreate您的活动中,您可以使用此方法检查当前方向
Configuration newConfig = getResources().getConfiguration();
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
// set background for landscape
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
// set background for portrait
}