Quick Setting Tiles 基础教程。

参考文档:

Android 7.0 允许你直接在通知栏添加自定义的图标。虽然不知道国内的系统会如何处理这个功能,但是可以先来尝尝鲜。

什么是Quick Setting Tile

就是通知栏上的图标,比如 Wifi 开关,手电筒开关等。

什么操作适合使用 Quick Setting Tile

相比于桌面快捷方式,Widget 等方式,Setting Tiles 的优势是更方便更快捷,不需要解锁手机就能使用。

那么,什么样的操作适合Quick Setting Tile。官方的博客认为需要考虑操作的紧急度(Urgency) 和使用率(Frequency)。
上面说到的两点中Urgency 的优先级更高,因为 Frequency 因人而异,每一个用户都不一样。

Tilte Service

要创建自定义的 Title,要提供一个跟图标绑定的 Tile Service。Tile Service 是一种的特殊的 Service,它的生命周期完全由系统来控制。

Title Service 的定义方法跟普通的 Service 没有区别,需要在manifest.xml 文件中声明:

<service    
    android:name=".TestTitleService"
    android:icon="@drawable/ic_add_title"
    android:label="@string/add_title"
    android:permission="android.permission.BIND_QUICK_SETTINGS_TITLE">    
    <intent-filter>        
        <action android:name="android.service.quicksettings.action.QS_TILE"/>      
    </intent-filter>
</service>

icon 是在通知栏显示的图标。需要选一个前景色为白色,背景色为透明的向量图标,最好是一个有意义的图标。
label 是图标的标题,不应该超过18个字符。

permission 和 action 标识出这个 Service 是一个 Title Service。

Title Service 的生命周期

Title Service 是一个Bound Service. 所以她的生命周期完全是由 Android 系统控制的。
Tile Service 的主要生命周期有:

  • onTileAdded() 当用户将图标添加到通知栏的时候调用。
  • onStartListening() 当图标变得可见的时候调用。
  • onStopListening() 当图标变得不可见的时候调用。
  • onTileRemoved() 当用户将图标移除的时候调用。
    可以根据需求去使用这四个函数。注意 Tile Service 在onStopListening()之后就会结束了。不要假定在 start 到 stop 之外 service 还能存活。

处理点击事件

处理 Tile 的点击事件也很简单。重写 TileService 的 onClick 方法就可以了。
点击事件中可以打开一个 Dialog 或者 Activity。但是要注意一点,Tile 可能在锁屏的情况下被点击,这时是不能弹出 Dialog 的,但是可以打开带有 FLAG_SHOW_WHEN_LOCKED Flag 的 Activity。但是这两种方式其实都不是特别自然,不推荐使用。

下面是一段 click 的示例代码, 用户每次点击都会改变图标的状态。

    @Override
    public void onClick() {
        Tile tile = getQsTile(); // 获取 Tile
        if (tile.getState() == Tile.STATE_ACTIVE) {
            tile.setState(Tile.STATE_INACTIVE);
        } else {
            tile.setState(Tile.STATE_ACTIVE);
        }

        tile.updateTile(); // 更新完后必须调用 update 才能生效
    }

其他

关于 QSTile 还有很多相关的内容。上面只是一个基础的教程。更多的内容请阅读参考文档。

demo

https://github.com/Guaidaodl/Android-Demos/tree/master/QSTile

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,149评论 25 709
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,663评论 2 45
  • Android自定义快速设置 Customizer Quick Setting 自定义快速设置 Android N...
    FamilyYuan阅读 8,485评论 0 5
  • 愿往后的时光都是崭新的 去记录 去寻找 去做梦 愿我们都能成为 自己想成为的人 如果有一天 你一无所有 我还是你最...
    而废阅读 1,287评论 0 0
  • First created on Jan.05.2013. All rights reserved. 站在凯旋门上...
    astrocachet阅读 1,579评论 0 0