Android 更改方向时不要更改背景

Android 更改方向时不要更改背景,android,background,orientation,landscape,Android,Background,Orientation,Landscape,在我的应用程序中,我有一个图像作为背景。当应用程序处于纵向模式时,这很好。但当它处于横向模式时,图像会旋转并拉伸 我知道我们可以使用layout land文件夹,但使用此解决方案,我的所有布局将仅用于一个图像(不太符合逻辑…) 还有别的解决办法吗 PS:我的图像只是一个碳纹理,所以,一个解决方案,以防止它转向与方向将是好的 编辑: hotveryspicy,您的解决方案是可行的,但是,有些活动的属性为android:configChanges=“orientation”(在清单中),并且不适用于

在我的应用程序中,我有一个图像作为背景。当应用程序处于纵向模式时,这很好。但当它处于横向模式时,图像会旋转并拉伸

我知道我们可以使用layout land文件夹,但使用此解决方案,我的所有布局将仅用于一个图像(不太符合逻辑…)

还有别的解决办法吗

PS:我的图像只是一个碳纹理,所以,一个解决方案,以防止它转向与方向将是好的

编辑:

hotveryspicy,您的解决方案是可行的,但是,有些活动的属性为android:configChanges=“orientation”(在清单中),并且不适用于它们。如何解决这个问题

事实上,当方向改变时,我使用这个属性来保存状态,但这不是一个好方法。我需要使用onSaveInstanceState来实现这一点


同时,有没有一个解决方案可以让我保留这个糟糕的解决方案

我怀疑是否有可能做到你所描述的。唯一可能的解决方案(布局用地)是您已经排除的。我想这是唯一的方法。

ya,首先在onCreate()中检查方向。


如果您将背景图像的替代版本放入
drawable land
res文件夹中,它会起作用吗?这样,您仍然可以使用相同的布局文件并引用其中的
@drawable/background

对于属性为android:configChanges=“orientation”的活动不起作用。请参阅此
Display mDisplay= activity.getWindowManager().getDefaultDisplay();
int width= mDisplay.getWidth();
int height= mDisplay.getHeight();

if(width>height)
{
//Landscape
//set landscape compatible image 
}
else
{
//Portrait
//set portrait compatible image
}