片段的屏幕方向改变

时间:2015-03-10 21:08:11

标签: android android-fragments screen-orientation samsung-mobile

我需要检测片段上的屏幕方向更改并执行此操作,我目前正在使用此方法:

public void onEvent(OrientationEvent event){...}

在我的Nexus 4上运行得非常好。 我遇到的问题是在三星Galaxy S3上,旋转屏幕时不调用该方法。有人有想法吗?

非常感谢。

3 个答案:

答案 0 :(得分:1)

@ Handling Runtime Changes上有一个很好的Google网页。这包括用户在水平/垂直视图和切换应用程序之间切换屏幕的时间。代码段:

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

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}

上面的代码可以放在Activity或Fragment子类中。

在清单xml中,设置:

<activity android:name=".MyActivity"
          android:configChanges="orientation">

请告诉我们,我想知道您的进展情况。总有一天我也想这样做。我会像这样编码,如果我做的话

答案 1 :(得分:0)

private String getScreenOrientation(){    
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
    return "ORIENTATION_PORTRAIT";
else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
    return "ORIENTATION_LANDSCAPE";
else
    return "";

}

答案 2 :(得分:0)

您需要简单地覆盖片段中的onConfigurationChange()方法。你可以看一下这个开发者的android帖子:

  

public void onConfigurationChanged(Configuration newConfig)

     

当您的设备配置发生变化时系统调用   组件正在运行。请注意,与活动,其他组件不同   在配置更改时永远不会重新启动:它们必须始终   处理更改的结果,例如通过重新检索   资源。

     

在调用此函数时,您的Resources对象   将更新以返回与新匹配的资源值   配置。

     

参数

     

newConfig 新设备配置。

在onConfigurationChanged中,你需要检查当前的方向,如:

newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE
newConfig.orientation == Configuration.ORIENTATION_PORTRAIT

并添加逻辑