如何在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... 
    } 
} 
+0

和@Femi感谢您回复但如果我发生,我的屏幕只是一个选项卡屏幕与多个PreferenceActivity,我只是想屏幕只是定位其手机位置的原因,我会怎么做? – zack 2011-05-01 17:12:55

http://developer.android.com/reference/android/app/Activity.html#onConfigurationChanged%28android.content.res.Configuration%29

编辑:在代码(将此添加到您的活动中):

@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 
     } 
}