asysbang

 找回密码
 立即注册
查看: 4936|回复: 0
打印 上一主题 下一主题

在状态栏上添加设置按钮

[复制链接]

513

主题

2

好友

6404

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2014-2-17 10:36:24 |只看该作者 |倒序浏览
小米和三星手机下拉状态栏之后,第一排显示的都是一些设置类的按钮

那么如何实现这个修改

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);  这样类似的函数来实现的



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

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

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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2024-10-5 21:15 , Processed in 0.044797 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部