Android设置全屏显示

设置全屏一般常用的方法有2种。

 一,在AndriodManifest.xml文件中设置

看需求可以设置Activity的theme 或者application 的theme

android:theme=”@android:style/Theme.Light.NoTitleBar.Fullscreen”

如果在Application中加入这句话的话,意味着你对该app下所有的Activity都设置全屏

也可以自定义在res文件夹的values文件夹下有一个styles.xml文件 定义一个

```

Theme.AppSetFullScreenTheme

```

然后我们就可以使用这个Theme了

android:allowBackup="true"

android:icon="@drawable/icon"

android:label="@string/app_name"

android:theme=”@android:style/Theme.AppSetFullScreenTheme”">

二,在代码里面设置

    首先也是最重要的一点设置全屏的方法需要些在setContentView方法之前

requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,                                          WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏


设置进入全屏,取消全屏

用一个工具类CommonUtil 设置隐藏标题栏、设置全屏,取消全屏把方法封装起来

在需要使用时吧Activity本身作为参数传递进去调用方法就OK.

import android.app.Activity;

import android.view.Window;

import android.view.WindowManager;

public class CommonUtil {

/**

* 设置隐藏标题栏

*

* @param activity

*/

public static void setNoTitleBar(Activity activity) {

activity.requestWindowFeature(Window.FEATURE_NO_TITLE);

}

/**

* 设置全屏

*

* @param activity

*/

public static void setFullScreen(Activity activity) {

activity.getWindow().setFlags(

WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

}

/**

* 取消全屏

*

* @param activity

*/

public static void cancelFullScreen(Activity activity) {

activity.getWindow().clearFlags(

WindowManager.LayoutParams.FLAG_FULLSCREEN);

}

}

全屏非全屏切换问题

一,全屏界面切换到非全屏界面问题

从一个全屏界面切换到一个非全屏界面,如果处理的不好很容易产生界面抖动

主要是在切换换的过程中,会先出现界面内容,然后由于状态栏的出现导致界面下移

第一种方法

                   全屏界面是刚进入的时候设置了全屏,没了状态栏,进入非全屏,状态栏肯定要显示,于是乎就发生了抖动的现                 象,这里采用的就是跳转之前退出全屏,这就才能保证状态栏不抖动。

          在全屏界面设置如下

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

                WindowManager.LayoutParams.FLAG_FULLSCREEN);

在切换到非全屏界面之前执行该操作

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

第二种方法

第一种方法不算完美至是在非全屏界面的抖动转移到全屏界面了。

第二种做法是在非全屏界面采用状态栏占位的方式也。改方法在setContentView方法之后执行。

/**

* 状态栏处理:解决全屏切换非全屏页面被压缩问题

*/

public void initStatusBar(int barColor) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");

// 获取状态栏高度

int statusBarHeight = getResources().getDimensionPixelSize(resourceId);

View rectView = new View(this);

// 绘制一个和状态栏一样高的矩形,并添加到视图中

LinearLayout.LayoutParams params

= new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight);

rectView.setLayoutParams(params);

//设置状态栏颜色

rectView.setBackgroundColor(getResources().getColor(barColor));

// 添加矩形View到布局中

ViewGroup decorView = (ViewGroup) getWindow().getDecorView();

decorView.addView(rectView);

ViewGroup rootView = (ViewGroup) ((ViewGroup) this.findViewById(android.R.id.content)).getChildAt(0);

rootView.setFitsSystemWindows(true);

rootView.setClipToPadding(true);

}

第三种方法

全屏界面设置style

然后在setContentView方法之前设置

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,         、WindowManager.LayoutParams.FLAG_FULLSCREEN); 

然后在非全屏界面setContentView方法之前调用

//平滑切换全屏方法

public void smoothSwitchScreen() {

// 5.0以上修复了此bug

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {

ViewGroup rootView = ((ViewGroup) this.findViewById(android.R.id.content));

int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");

int statusBarHeight = getResources().getDimensionPixelSize(resourceId);

rootView.setPadding(0, statusBarHeight, 0, 0);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

}

}

更多相关文章

  1. android service 学习
  2. Android开发周刊 第四期
  3. android 细节之禁用返回键
  4. Android中手机震动的设置(Vibrator)的步骤(Android学习随笔三)
  5. Android学习笔记:Android基础知识总结
  6. Edittext 各种属性
  7. Android之back键拦截处理
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. GridLayout 使用总结
  2. FireMonkey支持的机型
  3. Android知识体系总结(全方面覆盖Android知
  4. 【Android】Android中 Paint 字体、粗细
  5. android 获取路径目录方法以及判断目录是
  6. Android编译环境
  7. android 学习笔记1
  8. 系出名门Android(6) - 控件(View)之DateP
  9. 关于Android的prelink(Linux)
  10. TextView英文自动换行解决方法