`
koliy
  • 浏览: 149558 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何在android--statusBar上添加字符显示

 
阅读更多
最近修改statusBar,需要在上面添加自定义的字符。
版本:android-2.3.1
--------------------------------------------------

1.先参考statusbar上时间的布局文件:
frameworks\base\packages\SystemUI\res\layout\status_bar.xml

 <LinearLayout android:id="@+id/statusIcons"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:paddingRight="6dip"
            android:gravity="center_vertical"
            android:orientation="horizontal"/>    

        <com.android.systemui.statusbar.Clock  
            android:textAppearance="@*android:style/TextAppearance.StatusBar.Icon"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:singleLine="true"
            android:paddingRight="6dip"
            android:gravity="center_vertical|left"
            />
        <com.android.systemui.statusbar.HandSetNum  //我们所需要显示的字符
			android:textAppearance="@*android:style/TextAppearance.StatusBar.Icon"
			android:layout_width="wrap_content"
			android:layout_height="match_parent"
			android:textSize="14sp"
			android:gravity="center_vertical"
			android:paddingLeft="10dip"
			android:paddingRight="10dip"
			/>



注释: <com.android.systemui.statusbar.Clock 
       <com.android.systemui.statusbar.HandSetNum 
意思很明确,就是在statusbar目录下添加一个类名文件,我们参考closk,在
\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\下创建一个HandSetNum.java 文件,里面内容基本跟clock.java一样。
android:gravity="center_vertical" :意思就是在组件里面的位置
android:layout_gravity="center_vertical" :指组件在layout的位置。

android:paddingLeft="10dip"  :离组件边距
android:paddingRight="10dip"

2.编写HandSetNum.java


public class HandSetNum extends TextView {
    private boolean mAttached;
	
    public HandSetNum(Context context) {
        this(context, null);

    }

    public HandSetNum(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public HandSetNum(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();

        if (!mAttached) {
            mAttached = true;
            IntentFilter filter = new IntentFilter();

            filter.addAction(Intent.ACTION_HANDSET_NUM);
            getContext().registerReceiver(mIntentReceiver, filter, null, getHandler());
        }
   
        updateHandSetNum();
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        if (mAttached) {
            getContext().unregisterReceiver(mIntentReceiver);
            mAttached = false;
        }
    }

    private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_HANDSET_NUM)) {
				updateHandSetNum();
            }
            
        }
    };

    final void updateHandSetNum() {

        	setText("Hs:1");
    }
}//end HandSetNum




基本跟clock.java代码相同,主要以setText();来实现字符的显示。
3.编译android源码
分享到:
评论

相关推荐

    scrolling_text_on_the_statusbar.rar_statusbar_状态栏

    本教程将深入讲解如何在状态栏上实现滚动文本的效果,这对于开发者来说是一种独特且吸引用户注意力的方式。 首先,我们需要了解滚动文本的基本原理。滚动文本通常是通过循环播放文本字符串来实现的,就像一个小型的...

    Android_基础UI编程[1].pdf

    - `setTitle()` 和 `setStatusBar()` 方法用于控制Activity的标题栏和状态栏的显示。在调用 `setCurrentView()` 之前,可以使用 `requestWindowFeature(Window.FEATURE_NO_TITLE)` 来隐藏标题栏,实现全屏效果。 -...

    android状态栏分析

    这里定义了一个字符串数组,包含了所有可能出现在状态栏上的图标ID。 在`StatusBarManagerService.java`中,会创建一个`StatusBarIconList`对象,并通过调用`defineSlots`方法来初始化这个列表: ```java ...

    08.android 定制系统,APK集成到系统

    - 可以设置是否显示导航栏 (`not_navigation_bar`) 和状态栏 (`not_status_bar`),以及4G模块型号 (`module_4G`)。 - 控制是否为系统默认启动器 (`default_launcher`),系统是否已root (`has_root`),以及USB ...

    Android实现的截屏小程序示例

    在上面的代码中,状态栏(StatusBar)没有被包含在截屏内。通常,需要额外处理以获取包含状态栏的全屏截图。 - 另外,为了提高性能和节省内存,可以考虑使用`Bitmap.createBitmap(View, int, int, int, int)`来只...

    Flutter学习Roadmap.pptx

    - **数据操作**:如flutter_image_compress用于图片压缩,flutter_statusbar_manager管理状态栏。 - **设备交互**:如device_info获取设备信息,keyboard_visibility监听键盘状态,image_picker和image_picker_saver...

Global site tag (gtag.js) - Google Analytics