如何在android中创建屏幕方向意识?
问题描述:
您如何检测到用户已将显示屏的方向从纵向改为横向,反之亦然?如何在android中创建屏幕方向意识?
Android应用程序必须适应新的方向。系统应该向所有打开的应用程序发送方向消息更改,以便它们可以调整。我在文档中找不到任何关于此的内容?对不起,如果我从别的地方复制这些声明,但我是新的ina android/java的kinna,有人可以指导我吗?
它只是在多个标签我有偏好屏幕的一个,但我只想当手机位置改变屏幕方向的只有变化......
public class Tab2Activity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.tab2);
}
}
答
当方向更改时,Android会自动重新创建(销毁并创建)您的活动。如果您想为景观设计特殊的布局,您可以在layout-land
文件夹中创建一个特殊的资源文件,该文件夹将在重新创建活动后加载。
在另一方面,如果要覆盖默认行为,这样就可以做一些定制当方向的变化,你可以重写,像这样onConfigurationChanged方法:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
//do something if portrait...
}
}
答
编辑:在代码(将此添加到您的活动中):
@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
}
}
和@Femi感谢您回复但如果我发生,我的屏幕只是一个选项卡屏幕与多个PreferenceActivity,我只是想屏幕只是定位其手机位置的原因,我会怎么做? – zack 2011-05-01 17:12:55