我需要检测片段上的屏幕方向更改并执行此操作,我目前正在使用此方法:
public void onEvent(OrientationEvent event){...}
在我的Nexus 4上运行得非常好。 我遇到的问题是在三星Galaxy S3上,旋转屏幕时不调用该方法。有人有想法吗?
非常感谢。
答案 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
并添加逻辑