Android StatusBar 更改

原创 2012年03月23日 17:42:13
本文只是简单修改statusbar样式,我的做法是将Android2.1状态栏样式修改为Android2.3的样式,看到本文的可以拍拍砖,因为这是在太简单了...

    要修改statusbar样式,首先要注意以下几点:
        1、状态栏的图标是如何控制的;
        2、状态栏背景;
        3、状态栏上日期、时间颜色等。

 

1、图标

   我们先来分析第一个,这是重点!首先我们要找到源文件目录和资源文件目录,源文件目录(frameworks/base/services/java/com/android/server/status)资源文件目录(/frameworks/base/core/res/res/layout)。好了,在源码目录我们看到StatusBarPolicy这个类里面有很多的静态数组比如:

  1. // wifi  
  2.     private static final int[] sWifiSignalImages = new int[] {  
  3.             com.android.internal.R.drawable.stat_sys_wifi_signal_1,  
  4.             com.android.internal.R.drawable.stat_sys_wifi_signal_2,  
  5.             com.android.internal.R.drawable.stat_sys_wifi_signal_3,  
  6.             com.android.internal.R.drawable.stat_sys_wifi_signal_4,  
  7.         };  
  8.     //GSM/UMTS  
  9.     private static final int[] sDataNetType_g = new int[] {  
  10.             com.android.internal.R.drawable.stat_sys_data_connected_g,  
  11.             com.android.internal.R.drawable.stat_sys_data_in_g,  
  12.             com.android.internal.R.drawable.stat_sys_data_out_g,  
  13.             com.android.internal.R.drawable.stat_sys_data_inandout_g,  
  14.         };  
  15.     private static final int[] sDataNetType_3g = new int[] {  
  16.             com.android.internal.R.drawable.stat_sys_data_connected_3g,  
  17.             com.android.internal.R.drawable.stat_sys_data_in_3g,  
  18.             com.android.internal.R.drawable.stat_sys_data_out_3g,  
  19.             com.android.internal.R.drawable.stat_sys_data_inandout_3g,  
  20.         };  
  21.     private static final int[] sDataNetType_e = new int[] {  
  22.             com.android.internal.R.drawable.stat_sys_data_connected_e,  
  23.             com.android.internal.R.drawable.stat_sys_data_in_e,  
  24.             com.android.internal.R.drawable.stat_sys_data_out_e,  
  25.             com.android.internal.R.drawable.stat_sys_data_inandout_e,  
  26.         };  

看到了吧,代码中就是对资源图片的引用,基本的,要修改图片就按照StatusBarPolicy.java这个文件中的资源引用一个个对上就OK了,将要修改的图片替换drawable-hdpi这个文件中。

 

    2、背景
    在status_bar.xml文件中,很明显背景是一张名叫:statusbar_background.png的图片,在drawable-hdpi中找到替换成自己想要的背景就OK了。

  1. <com.android.server.status.StatusBarView xmlns:android="http://schemas.android.com/apk/res/android"   
  2.     android:background="@drawable/statusbar_background"  
  3.     android:orientation="vertical"  
  4.     android:focusable="true"  
  5.     android:descendantFocusability="afterDescendants"  
  6.    >  

3、状态栏时间颜色等
    我们看代码,不难发现,同样在status_bar.xml这个文件中,id为tickerText和date的标签中,在textColor这个属性中设置了字体颜色,我直接将其改为白色,即:#FFFFFFFF,关于这个值如果不太懂,请到网上查询。改了之后make,看看效果如何,如果您顺利,可以看到结果和您预想的一样,怎么了?如果statusbar背景是黑色的,怎么时间不见了?不是改过颜色了吗?嘿嘿,您没改!继续看代码,在文件StatusBarIcon.java中看到有如下一段代码:

  1. switch (data.type) {  
  2.             case IconData.TEXT: {  
  3.                 TextView t;  
  4.                 t = new TextView(context);  
  5.                 mTextView = t;  
  6.                 LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(  
  7.                         LinearLayout.LayoutParams.WRAP_CONTENT,  
  8.                         LinearLayout.LayoutParams.FILL_PARENT);  
  9.                 t.setTextSize(16);  
  10.                 t.setTextColor(0xFF000000);  
  11.                 t.setTypeface(Typeface.DEFAULT_BOLD);  
  12.                 t.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);  
  13.                 t.setPadding(6000);  
  14.                 t.setLayoutParams(layoutParams);  
  15.                 t.setText(data.text);  
  16.                 this.view = t;  
  17.                 break;  
  18.             }  

没错,就是t.setTextColor(0xFF000000);这个搞的,好了,将它继续修改为白色编译整个状态栏的样式修改就完成了。


修改状态栏(StatusBar)图标(icon)(定制自己的状态栏)

系统定制需要修改一下状态栏,如果想要刷机的话,网上资料挺多的,但是修改源代码的资料不多,在2.2中,源代码在frameworks/base/services/java/com/android/serv...
  • sdvch
  • sdvch
  • 2015年03月10日 18:03
  • 1640

Android改变状态栏statusbar背景色

Android改变状态栏statusbar背景色Android开发中在某些界面为了保证显示一致性,可能需要调整statusBar的背景色,本文介绍了Android 4.4(API 19)和Androi...
  • gaoyan10
  • gaoyan10
  • 2015年05月15日 16:56
  • 1712

【Android】关于statusbar的处理

转自:http://blog.csdn.net/jdsjlzx/article/details/41643587 Android 沉浸式状态栏、状态栏一体化、透明状态栏、仿i...
  • NeoAdrian
  • NeoAdrian
  • 2016年05月18日 19:21
  • 1776

Android状态栏(一):StatusBar的浮动显示与隐藏

有时候当我们设置Activity全屏后,希望点击屏幕时状态栏浮动显示在界面上,而不是将界面挤下去。可以用如下方法实现: public class MainActivity extends Activi...
  • codingbuddy
  • codingbuddy
  • 2014年03月15日 00:11
  • 1988

android沉浸式状态栏StatusBar在不同Window下的实现

android沉浸式状态栏StatusBar在不同Window下的实现StatusBar沉浸式的2种实现方式对于沉浸式状态栏的实现,我觉得有两种实现方式。一是:将状态栏的颜色和状态栏下面的View颜色...
  • qq_33689414
  • qq_33689414
  • 2017年06月16日 13:39
  • 1263

Android statusbar 透明后 toolbar与之重叠问题的解决方法

之前想要给statusbar和toolbar实现这样的效果: 为使得statusbar变为透明,在自定义theme中给statusbar添加了以下属性: true可是在st...
  • Zafir6453
  • Zafir6453
  • 2016年05月08日 10:14
  • 3076

Android开发学习之添加StatusBarNotification(状态栏通知)

1.StatusBarNotification介绍 顾名思义,就是对状态栏的一些操作。当我们执行一个操作,想在状态栏上给出提示时,就是这里想要实现的功能。比如未接电话,未读过的短信,文件下载等等.....
  • haoyunsuishen
  • haoyunsuishen
  • 2016年08月26日 16:45
  • 1473

Android完美获取状态栏高度、标题栏高度、编辑区域高度的获取

日常开发中我们经常会因为绘图、绘制自定义组件、定位组件或者是计算布局高度需要减去状态栏高度等需要来获取Activity界面中状态栏、标题栏的高度。但很多人马上要拿起来就用还是会遇到各种各样的问题,一时...
  • yzyssg1
  • yzyssg1
  • 2017年06月06日 22:38
  • 305

透明状态栏(StatusBar)的全适配

透明状态栏(StatusBar)的全适配状态栏指定android手机上顶部显示手机状态信息的位置。透明状态栏是android 自4.4开始新加入的功能,他可以是状态栏根据我们自己想要的颜色进行定义,使...
  • lisdye2
  • lisdye2
  • 2016年05月06日 14:50
  • 6848

隐藏StatusBar和更改应用程序名称

———————-隐藏Status Bar—————————– 读者可能知道一个简易的方法,那就是在程序的viewDidLoad中加入 [[UIApplication sharedApplicati...
  • a6472953
  • a6472953
  • 2013年03月07日 14:22
  • 868
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android StatusBar 更改
举报原因:
原因补充:

(最多只允许输入30个字)