`

Android Activity始终横屏、全屏、屏幕方向改变等屏幕相关

 
阅读更多

android手机屏幕方向改变的时可以使应用程序随之相应改变,这里就简单介绍屏幕操作中的一点小技巧。包括始终横(竖)屏、全屏、屏幕方向改变时销毁Activity的问题。

 

1、屏幕始终横屏或竖屏

对于一些游戏,可能我们希望屏幕始终横屏,这时只需要在AndroidManifest.xml中对Activity属性进行设置

android:screenOrientation="landscape"表示始终横屏,

android:screenOrientation="portrait"表示始终竖屏,下面是始终横屏的例子

<activity android:name="ViewStatusDetailActivity"
	android:screenOrientation="landscape"
        android:label="@string/app_name">
        </activity>

android:screenOrientation的其他值见screenOrientation

 

2、Activity全屏

两种配置方式,

一种是在AndroidManifest.xml中对Activity属性进行设置,如下:

<activity android:name="ViewStatusDetailActivity"
	android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
	android:label="@string/app_name">
    </activity>

 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"表示全屏该Activity

 

第二种是在代码中进行设置

public void onCreate(Bundle savedInstanceState) { 
	super.onCreate(savedInstanceState); 
	//无title   
	requestWindowFeature(Window.FEATURE_NO_TITLE);   
	//全屏   
	getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,     
		WindowManager.LayoutParams. FLAG_FULLSCREEN);          
	setContentView(R.layout.main); 
	} 
} 

 其中requestWindowFeature和getWindow().setFlags必须一起使用,并且在setContentView前面

 

 

3、解决屏幕方向改变Activity销毁重建问题

当屏幕方向改变时,经常发现刚输入的文字被清空了、imageView图片不存在了,或是网络数据重新获取,其实是Activity会被销毁,重新调用OnCreate构建,如何防止这种情况呢,分为两步:

3.1 在AndroidManifest.xml中对Activity属性进行设置,如下:

<activity android:name="ViewStatusActivity"
                  android:configChanges="orientation|keyboardHidden"
                  android:label="@string/app_name"
                  android:theme ="@style/update_status_style">
        </activity>

android:configChanges="orientation|keyboardHidden"表示改变界面方向和隐藏键盘

具体android:configChanges见configChanges

 

 

3.2 重载onConfigurationChanged方法,此方法会在屏幕方向改变时被调用如下:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {

        super.onConfigurationChanged(newConfig);

        if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
            // 加入横屏要处理的代码
        } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
            // 加入竖屏要处理的代码
        }
    }

 

参考:http://ghostfromheaven.iteye.com/blog/967629

 

 

 

分享到:
评论
2 楼 Trinea 2012-07-31  
yhh730 写道
为什么我设置了android:configChanges="orientation|keyboardHidden"  不起作用了,还是走onCreate(),而且转屏时也不调用onConfigurationChanged()方法

这样设置并且重写onConfigurationChanged方法后应该就可以了,你可以看下sdk的介绍http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges
1 楼 yhh730 2012-07-31  
为什么我设置了android:configChanges="orientation|keyboardHidden"  不起作用了,还是走onCreate(),而且转屏时也不调用onConfigurationChanged()方法

相关推荐

Global site tag (gtag.js) - Google Analytics