如何在屏幕方向更改时开始新的活动? Android

问题描述:

我正在编写一个应用程序,它在纵向视图顶部有一个画廊,当您单击一张图片时,它将膨胀并填满整个屏幕。如何在屏幕方向更改时开始新的活动? Android

然而,这种方式在横向模式下画廊掩盖了大部分图片,它通常看起来很糟糕。

我做了一个GridView的横向模式。我现在遇到的问题是在方向更改时将其从库活动更改为Gridview活动。有任何想法吗?

+0

http://www.tekkie.ro/quick-n-dirty/how-to-change-your-layout-in-android-landscape-portrait-mode/ – waqaslam 2012-04-14 21:53:52

添加到您的活动:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    startActivity(newActivity) 
} 

注意,这是一个坏主意。其实,这是一个非常糟糕的主意。一个更好的选择是要么强制一个方向,要么创建一个在两个方向看起来都很棒的布局。

+0

谢谢你的工作。对于可能正在阅读本文的其他人来说,您需要将android:configChanges =“orientation”添加到清单中。 – 2012-04-15 01:31:34

+0

为什么这是一个坏主意btw? – 2012-04-15 01:32:14

+0

@Matthew Lueder onConfigurationChanged()实际上旨在用于将数据从一个方向更改保留到下一个方向。理论上,在我展示的实现中,用户可以改变方向,并建立大量积压的活动,这会为用户创建(至少我假设)意想不到的后退按钮行为。所以确保你也适当地使用finish()。因此,简而言之,只有在您需要绝对需要启动活动时,才会非常小心地使用它。 – 2012-04-15 02:12:43

作出风景模式额外的布局XML文件,并把它放入文件夹“布局土地”

做到这一点是定义两个布局,一个布局端口和一个在layou-的正确方法土地目录。也就是说,您将拥有以下两种布局: res/layout-port/main.xmlres/layout-land/main.xml

在您的软件中,您只需编写secContentView(R.layout.main);,android将负责在设备旋转时应用正确的布局。