asysbang

标题: 在状态栏上添加设置按钮 [打印本页]

作者: admin    时间: 2014-2-17 10:36
标题: 在状态栏上添加设置按钮
小米和三星手机下拉状态栏之后,第一排显示的都是一些设置类的按钮

那么如何实现这个修改

SystemUI中有个status_bar_expanded.xml 布局文件

其中有android:id="@+id/notification_panel"   这个是通知栏的根节点

这个布局中 <include layout="@layout/status_bar_expanded_header"

这个status_bar_expanded_header.xml  就是通知的布局文件

回到status_bar_expanded.xml文件

在 <include layout="@layout/status_bar_expanded_header">

下面添加一个LinearLayout  (里面包含几个ImageButton 就可以了)

===============以上修改之后 UI 上就可以显示 出设置的按钮栏====

下面为添加的按钮加上事件处理

首先在布局文件中加上id   android:id="@+id/settings_wifi"

然后在 PhoneStatusBar.java 中添加listener

    //custom settings
    View settingsWifi;

    private View.OnClickListener settingsWifiListener = new View.OnClickListener() {
        public void onClick(View v) {
            System.out.println("===========onclick=====custom======");
        }
    };

    在makeStatusBarView  函数中

     //custom settings
    settingsWifi = mStatusBarWindow.findViewById(R.id.settings_wifi);
    settingsWifi.setOnClickListener(settingsWifiListener);


=========点击也ok了=================

可以和系统状态栏原有的设置按钮关联起来

系统中原来的setting按钮是QuickSettings

其中QuickSettings setService函数持有PhoneStatusBar的引用

所以在QuickSettings  监听到wifi和蓝牙状态变化之后通过其持有的引用可以回传给自定义的按钮


原来的点击事件是通过 startSettingsActivity(android.provider.Settings.ACTION_WIFI_SETTINGS);  这样类似的函数来实现的

[attach]107[/attach]

============其他说明==========

NetworkController.java 负责监听网络变化,这个比较详细包括wifi信号强度的变化

QuickSettings.java 中的receiver只是监听状态变化








欢迎光临 asysbang (http://asysbang.com/) Powered by Discuz! X2.5