Android开发模版代码(4)——状态栏设置

下面的代码是基于开源项目SystemBarTint,我们需要添加其依赖

compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'

设置状态栏白色

1. 设置主题theme

在AndroidManifest文件中,设置theme

按住Ctrl,点开那个theme,修改theme

2. 设置xml文件

之后在xml文件中的根节点,添加属性android:fitsSystemWindows="true",同时,把背景颜色设置为白色(这一步背景色可以不设置,我的项目整体是白色的,看你需求)

3. 添加代码

下面的是把状态栏设置为白色,字体和图标颜色设置为黑色的代码,复制一份,之后Activity对应的java文件中的setContentView之前调用setWhiteBar(this)方法即可

我是把下面的代码封装到了一个状态栏工具类,之后调用

public static void setWhiteBar(Activity activity) {
        //设置状态栏为全透明
        transparencyBar(activity);
        //设置状态栏为白色
        SystemBarTintManager tintManager = new SystemBarTintManager(activity);
        tintManager.setStatusBarTintEnabled(true);
        tintManager.setStatusBarTintResource(R.color.color_white);
        //设置状态栏字体和图标为黑色
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        }
    }

    /**
     * 修改状态栏为全透明
     *
     * @param activity
     */
    @TargetApi(19)
    public static void transparencyBar(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = activity.getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);

        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Window window = activity.getWindow();
            window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
    }

Activity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    StatusBarUtil.setWhiteBar(this);
    setContentView(R.layout.activity_main);
}

其他补充

改变状态栏颜色

SystemBarTintManager tintManager = new SystemBarTintManager(activity);
tintManager.setStatusBarTintEnabled(true);
//这里改变颜色即可
tintManager.setStatusBarTintResource(R.color.color_white);

动态设置状态栏字体颜色

可以通过设置一个boolean,来判断当前状态栏的颜色是否为亮色,如果为亮色,则设置为黑色图标,如果为暗色,则设置为白色图标

boolean isLightColor;
int color= Color.parseColor("#f0f0f0");
double v = ColorUtils.calculateLuminance(color);
//判断颜色亮色
if(v>=0.5){
    isLightColor = true;
}else{
    isLightColor = false;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if(isLightColor){
        //设置黑色字体颜色
        activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
    }else{
        //设置白色字体颜色
        activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    }
}

原文地址:https://www.cnblogs.com/kexing/p/11619708.html

时间: 2024-10-07 15:19:25

Android开发模版代码(4)——状态栏设置的相关文章

Android studio 显示代码行号 设置

首先我们打开我们的Android Studio.   这时会弹出setting页面,我们选择show line numbers然后点击确定按钮.   此时我们就可以看到代码左侧显示出行号了   我们可以看到不仅Java代码显示了行号,而且XML代码区域也显示了行号,大家可以自己试试.欢迎关注,后面会继续写Android开发的系列经验的.

Android 开发有用代码积累

Android开发需求变化快,开发周期要求尽量短,接下来一系列文章从实际使用出发总结一些常用的代码片段,便于查找,也为后来人提供一份参考. 1.获取Manifest的基本信息(升级页面和软件关于页面一般会使用到) Context mContext = XXXApplication.getInstance().getApplicationContext(); //获取Application的Context ,当然也可以获取当前的Activity的Context, Application一般是单例

第二篇 android开发环境搭建--谷歌代理设置 adt-bundle下载,sdk Manager使用 android环境变量配置

一 .从谷歌下载ADT adt( Android Development Tools )是谷歌开发的andorid开发的工具,adt-bundle直接集成了eclipse和android sdk(一般里面有最新版本的sdk)下载adt-bundle之后可以直接打开里面的eclipse即可进行android的开发 下载地址:adt官网下载地址 不过大家都知道谷歌的网站在大陆是受到限制的,这里交给大家一个方法,让你方便访问谷歌的网站 当然方法无非就是设置一个代理,这里可以用"自由门"这个软

Android开发常用代码片段

拨打电话 public static void call(Context context, String phoneNumber) { context.startActivity( new Intent(Intent.ACTION_CALL, Uri.parse( "tel:" + phoneNumber))); } 跳转至拨号界面 public static void callDial(Context context, String phoneNumber) { context.st

Android开发模板代码(一)——简单打开图库选择照片

首先,先贴上样本代码 //检查权限 public void checkPermission() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission

Android开发环境搭建2016 adb 设置

引言 最后一步 就是adb的设置 将如下两个文件的路径添加到一个新命名的Android的环境变量(系统)中 效果如下 再 添加path 变量中一个 %Android% 最后检验 命令行dos 中输入 adb 这样,就成功 下一篇文章,介绍一个崭新的安卓虚拟机

Android开发中,9-patch 图片设置背景带来的问题

9-patch 为了解决不同分屏下的图片适应性,对图片做了padding,而在android中,要给一个控件设置背景图,最终是要调用 setBackgroundDrawable  方法来设置图片资源,而此方法执行是这样的,如果图片资源带有padding的话,会缺省作为控件的padding.基于这样,如果控件没有明确设置自己的padding,很肯能会出现图片能出来,但是里边的内容,如文字看不到的情况,此时需要自己给控件设置下padding,才可以正常显示.

Android开发之代码混淆

1.启动混淆开关 在工程目录下的project.properties文件,有名为proguard.config标签,默认为关闭状态,打开即可. 2.进行混淆配置 在工程目录下的proguard-project.txt文件进行具体的混淆配置,配置完后右击工程,选择export导出apk包,该apk包就是混淆包了. 例:包名为com.test -dontwarn org.* -keepattributes EnclosingMethod, InnerClasses -keepattributes *

Android开发,使用背景图(xml drawable)为view 设置边框

Android 开发中,遇到需要设置边框的情景,使用背景图来实现,代码如下: <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 连框颜色值 --> <item> <shape> <solid android:color="#CCCCCC" /> </shape> </item>