Android StatusBar 更改

本文只是简单修改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这个类里面有很多的静态数组比如:

[java] view plain copy
  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了。

[xhtml] view plain copy
  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中看到有如下一段代码:

[java] view plain copy
  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);这个搞的,好了,将它继续修改为白色编译整个状态栏的样式修改就完成了。


你可能感兴趣的:(java,android,Date,XHTML,Signal)