(五)在android 4.4上设置手机状态栏的背景

1、demo效果图

在android 4.4上 有一个新的特性可以设置手机状态栏的背景,让手机整个界面的风格保持一致,在今年的google i/o上的android l默认就是这种风格。来先看一下demo效果图:

                                    

图一:透明状态栏                                                                                                               图2:蓝色背景状态栏

2、整个DEMO的工程结构图如下所示:

3、主要的实现代码如下所示:

首先,要记得导入systembartint-1.0.4.jar包

3.1 MainActivity.java中的代码如下所示:

package com.example.testdemo;

import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

import com.readystatesoftware.systembartint.SystemBarTintManager;

public class MainActivity extends Activity {
    private boolean isBarTint = true;
    private boolean isTranslucentBarTint = false;

    public void setBarTint(boolean isBarTint) {
        this.isBarTint = isBarTint;
    }

    public void setTranslucentBarTint(boolean isTranslucentBarTint) {
        this.isTranslucentBarTint = isTranslucentBarTint;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (isBarTint) {
            initSystemBar();
        } else if (isTranslucentBarTint) {
            initTranslucentSystemBar();
        }
    }
    @TargetApi(Build.VERSION_CODES.KITKAT)
    private void initSystemBar() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            setTranslucentStatus(true);
            SystemBarTintManager tintManager = new SystemBarTintManager(this);
            // 激活状态栏设置
            tintManager.setStatusBarTintEnabled(true);
            // 激活导航栏设置
            tintManager.setNavigationBarTintEnabled(false);

            int sbg = getResources().getColor(R.color.titlebar_rl_background);
            tintManager.setTintColor(sbg);
            tintManager.setStatusBarTintColor(sbg);

        }
    }

    @TargetApi(Build.VERSION_CODES.KITKAT)
    private void initTranslucentSystemBar() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            setTranslucentStatus(true);
            SystemBarTintManager tintManager = new SystemBarTintManager(this);
            // 激活状态栏设置
            tintManager.setStatusBarTintEnabled(true);
            // 激活导航栏设置
            tintManager.setNavigationBarTintEnabled(false);

            int sbg = getResources().getColor(R.color.viewfinder_title);
            tintManager.setTintColor(sbg);
            tintManager.setStatusBarTintColor(sbg);
        }
    }

    @TargetApi(Build.VERSION_CODES.KITKAT)
    private void setTranslucentStatus(boolean isOpen) {
        Window win = getWindow();
        WindowManager.LayoutParams winParams = win.getAttributes();
        final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
        if (isOpen) {
            winParams.flags |= bits;
        } else {
            winParams.flags &= ~bits;
        }
        win.setAttributes(winParams);
    }

    @TargetApi(Build.VERSION_CODES.KITKAT)
    private void setTranslucentNavigation(boolean isOpen) {
        Window win = getWindow();
        WindowManager.LayoutParams winParams = win.getAttributes();
        final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
        if (isOpen) {
            winParams.flags |= bits;
        } else {
            winParams.flags &= ~bits;
        }
        win.setAttributes(winParams);
    }
}

3.2 colors.xml的颜色值如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="titlebar_rl_background">#33b5e6</color>
    <color name="viewfinder_title">#80000000</color>
</resources>

3.3 styles.xml中的代码如下所示:

<resources>
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:windowNoTitle">true</item>
        <item name="android:fitsSystemWindows">true</item>
    </style>
</resources>

3.4 AndroidManifest.xml  中application或对应的activity设置主题 android:theme="@style/AppTheme"

时间: 2024-10-07 01:23:31

(五)在android 4.4上设置手机状态栏的背景的相关文章

cordova StatusBar插件的使用(设置手机状态栏颜色和页面头部颜色一致),做出和原生一样的页面效果体验

cordova StatusBar插件的使用(设置手机状态栏颜色和页面头部颜色一致),做出和原生一样的页面效果体验设置设备状态栏背景颜色 StatusBar.backgroundColorByHexString('#11c1f3')://设置数值类型 StatusBar.backgroundColorByName("white"); //设置名称类型 可以去参考 StatusBar插件的js源代码,里面很多设置方法. var namedColors = {    "black

Appium appium+Android+selenium+python web 自动化 / 手机自动化 [分享] (windows)

前期准备 1.windows操作系统2.python3.53.selenium4.chrome浏览器5.chrome浏览器驱动6.pycharm7.appium8.JDK9.SDK10.安卓模拟器(genymotion)或真机11.任意apk12.使用安卓模拟器genymotion需要virtual box(个别的会补充,软件版本自己随意) 一.知识补充(1) Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持iOS.Android及

Android添加快捷方式(Shortcut)到手机桌面

Android添加快捷方式(Short)到手机桌面 权限 要在手机桌面上添加快捷方式,首先需要在manifest中添加权限. <!-- 添加快捷方式 --> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> <!-- 移除快捷方式 --> <uses-permission android:name="com.andro

android从网络上异步加载图像

研究了android从网络上异步加载图像: (1)由于android UI更新支持单一线程原则,所以从网络上取数据并更新到界面上,为了不阻塞主线程首先可能会想到以下方法. 在主线程中new 一个Handler对象,加载图像方法如下所示 [java] view plaincopyprint? private void loadImage(final String url, final int id) { handler.post(new Runnable() { public void run()

在电脑上测试手机网站全攻略

最近公司要开发网站的移动版,让我准备准备知识,话说本人开发移动网站的经验还真不多,最悲剧的事情就是我的手机是个经典的诺基亚,而且公司还不给配手机,这是有多扣啊,没办烦啦,没有手机就用电脑模拟呗,相办法代替,查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法. Chrome* chrome模拟手机总共有四种方法,原理都一样,通过伪装User-Agent,将浏览器模拟成Android设备.以下标星的为推荐方法. 1

强大的Android参数模拟器,自由修改手机型号、SDK版本号等信息

很多人都知道安卓模拟器,在电脑上模拟手机的模拟器,今天我们试下另一种模拟器,并不是只能在电脑上的模拟器,而是可以在手机真机上运行的模拟器,可以让手机模拟出新的参数,比如手机型号,手机安卓系统信息比如sdk版本等等,这也是之前在群里一个qq好友分享的一个软件琢石模拟器,后来用了几个月了,都一直用着,做很多项目都需要用到,琢石模拟器软件的使用很方便,都是一键完成的,而且没有重启手机的繁琐步骤,这也是我们团队一直用的原因. 在使用过程中如果对生成的参数不满意,也可以自由的对每个参数进行修改,当然包括地

设计师给了px单位的标注,Android开发到底要设置多少dip、dp、sp?

本文链接    http://blog.csdn.net/xiaodongrush/article/details/29560431 1. 要开发一款Android APP,设计师和开发要约定哪些事情? 首先,选择一款主流机型. 然后,设计师根据该机型的屏幕尺寸设计效果图,给出px单位的标注. 最后,开发根据该机型,可以算出px与dp的换算方法,根据px单位的标注,设置为dp为单位的标注. 备注:1dp=1dip=1sp,对于一般长宽dp或者dip都可以,sp是字体专用单位,在操作系统中设置大中

ANDROID N 分屏设置

一 概述 android N的发布,最大的亮点有2个,原生系统对应用分屏的支持和快捷回复.现在只介绍分屏功能,目前最新的Android N系统支持横屏时让两个APP并排,竖屏时上下排放,而在Android TV上,原生系统也支持APP实现画中画.用户还可以在这两个App之间拖动数据,例如将一个App的Activity上的文件拖动到另外一个App的Activity中去. 用户开启分屏模式: 1点击右下角的方块,进入任务管理器,长按一个App的标题栏,将其拖入屏幕的高亮区域,这个App金进入了分屏模

android 文件系统目录分析(手机系统目录分析)

# pwd && ls -a -l / drwxrwxrwt root     root              2009-06-10 09:53 sqlite_stmt_journals drwxrwx--- system   cache             2008-09-06 22:51 cache d---rwxrwx system   system            1970-01-01 08:00 sdcard lrwxrwxrwx root     root