一、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的。



更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Fedora镜像
  2. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  3. Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
  4. Android中的五大布局
  5. Android设置Activity(界面)为全屏显示的两种方法 xml和java程序
  6. android UI进阶之弹窗的使用
  7. Android(安卓)仿微信Activity左右切换 【全局配置Activity显示动
  8. android 屏幕方向切换 锁定方向
  9. 【适配】【转】Android开发:最全面、最易懂的Android屏幕适配解决

随机推荐

  1. javascript选项卡,轮播图与购物车的实现
  2. CSS:层叠样式表
  3. 选项卡、轮播图实例
  4. PHP中CakePHP添加数据库实例方法
  5. PHP中强制类型转换的示例详解
  6. php中rsort函数实例用法
  7. 初学者怎么画出眼睛?板绘眼睛的步骤
  8. php语法技巧代码实例
  9. json,XHR,FetchAPI,async,await
  10. PHP方法的返回值示例详解