Android屏幕控制

一、AndroidManifest.xml对Activity屏幕的控制

 1、显式指定屏幕方向--禁止自动切换 默认情况下,

Activity是自动切换方向的。可以通过在AndroidManifest.xml中增加Activity的以下属性,显式指定屏幕方 向,禁止自动切换: 

 //指定为横屏 android:screenOrientation="landscape"

 //指定为竖屏 android:screenOrientation="portrait"  


2、 不显示窗口标题栏 可以通过Theme来实现。

首先在res/values文件夹中,创建一个winStyle.xml文件,其内容如下: 

 <?xml version="1.0" encoding="utf-8"?> 

<resources>    

    <style name="NoTitle" parent="android:Theme">       

         <item name="android:windowNoTitle">true</item>     

   </style> 

</resources> 

然后,在AndroidManifest.xml文件中,为Activity增加如下属性: android:theme="@style/NoTitle" 



 二、 Java层对屏幕的控制

 1、显式指定屏幕方向 

//显式指定为竖屏

 if(getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }


 //显式指定为横屏 

if(getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }  


2、 不显示窗口标题栏. 在代码中加入如下语句即可。

 requestWindowFeature(Window.FEATURE_NO_TITLE); 


 3、 全屏显示    在代码中加入如下语句即可。其实,这就是不显示系统状态栏(电量、信号强度等状态的显示区)。 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 


注意: getRequestedOrientation、setRequestedOrientation、requestWindowFeature、getWindow都是Activity类的 方法。 


 三、避免屏幕方向切换时Activity重启    

 默认情况下,如果没显式指定Acitivity的屏幕方向,则会随着使用动态切换屏幕方向。如果不加设置,屏幕方向的切换会导致Activity的重启, 即会关掉Activity并重新创建一个,这将导致onDestroy、onCreate等事件的发生,因而,屏幕切换,可能会导致那些与 Activity状态相关的应用出错。例如,某个应用是在Activity的onCreate函数中创建的,则屏幕的切换会导致该程序被多次创建,这很可 能出错。     为了避免这一点,最简单的方法是,显示指定屏幕方向,禁止自动切换。但是,这又导致屏幕方向不够灵活。下面提供一种方法,避免Activity随着屏幕的 切换而重启。 

    首先在AndroidManifest.xml文件中,为Activity增加如下属性:  android:configChanges="orientation|keyboardHidden" 

然后在Activity类中重载onConfigurationChanged方法即可,

如下: @Override public void onConfigurationChanged(Configuration config) {     super.onConfigurationChanged(config);     Log.i("FirstTest", "======onConfiguration}

这样,在屏幕切换时就不会多次创建新的Activity了,而是执行这个方法。



启动的时候是横屏的话就横屏表示,纵屏的话就纵屏表示,手机切换横竖屏不能用。
第一步:在Mainfest.xml中追加android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"

第二步:取得屏幕的长和宽,进行比较设置横竖屏的变量。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
if (width > height) {
orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
} else {
orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}


第三步:在onConfigurationChanged()函数中追加this.setRequestedOrientation(mOrientation)就行了
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
this.setRequestedOrientation(mOrientation);
}
切到别的画面的时候再回到原画面,它就仍然是横的或者是纵的。想让它从别的屏幕回来后,又重新横竖屏布局,只要在OnResume()中在设定下就行了,但是这个只支持横竖屏只有一个layout的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值