如何检测到用户已将显示屏的方向从纵向更改为横向,反之亦然?
Android应用程序必须调整为新方向。系统应该向所有打开的应用程序发送更改方向消息,以便他们可以进行调整。我在文档中找不到任何相关内容?对不起,如果我从其他地方复制这些声明,但我是kinna new ina android / java,有人可以指导我吗?
它只是我在多个标签中的首选项屏幕之一,但我只是想在手机位置发生变化时仅更改屏幕方向...
public class Tab2Activity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.tab2);
}
}
答案 0 :(得分:1)
当方向发生变化时,Android会自动重新创建(销毁然后创建)您的活动。如果您想要横向的特殊布局,可以在layout-land
文件夹中创建一个特殊的资源文件,该文件将在重新创建活动后加载。
另一方面,如果要覆盖默认行为以便在方向更改时可以执行自定义操作,则可以覆盖onConfigurationChanged方法,如下所示:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
//do something if portrait...
}
}
答案 1 :(得分:0)
编辑:在代码中(将此添加到您的活动中):
@Override
public void onConfigurationChanged(Configuration _newConfig){
super.onConfigurationChanged(_newConfig);
int height = getWindowManager().getDefaultDisplay().getHeight();
int width = getWindowManager().getDefaultDisplay().getWidth();
if(width > height){
// landscape
}else{
// portrait
}
}