一、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. Android下Activity全屏显示实现方法
  2. ReactNative(嵌入到android)调用android原生组件与原生模块(比如某
  3. Android获取mac地址方法,6.0以上也可用
  4. Android设置Activity(界面)为全屏显示的两种方法 xml和java程序
  5. Android Intent实现页面跳转的方法示例
  6. 【适配】【转】Android开发:最全面、最易懂的Android屏幕适配解决
  7. Android之屏幕方向|显示方式|Activity重建问题|横竖屏切换不同的
  8. android切换屏幕时的生命周期

随机推荐

  1. Android shape layer-list实现左右半圆的
  2. Android 将asserts文件夹内文件写入SD卡
  3. Android(安卓)取得手机屏幕大小
  4. Android or java https ssl exception
  5. Android: 利用Bimap,canvas处理图片(画直
  6. 生成keystore
  7. Android ListView快速查找
  8. Android SQLiteDatabase 的使用
  9. android 给图片加水印
  10. 服务器向Android写一个对象