Android N version 其中一个功能,就是允许三方app可以添加自己的快速设定,到系统的下拉设定中,方便用户快速打开关闭某些功能.

废话不多说,直接上代码来讲解.

创建一个class,继承自TileService,这个TileService是N SDK新加的,所以务必SDK更新到N version

public class TestTile extends TileService {

@Override

public void onStartListening() {

super.onStartListening();

}

@Override

public void onStopListening() {

super.onStopListening();

}

@Override

public void onClick() {

super.onClick();

}

}

这里的override方法之后会再详细介绍.

建完service后,需要在manifest中声明,这样才能被系统SystemUI query到

android:label="@string/tile_label"

android:icon="@drawable/ic_zen"

android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">

从上面的声明中,其实已经比较明显,这个Tile要显示的名字,icon等都是在这里声明的,特别注意这里一定要加上对应的permission才行.

下来可以先看下实际效果,下拉后再Quick Setting中会有个Edit,点击后往下滑动,三方APP定义的QS tile就会都显示,可以通过拖拽放到常用设定中.

Screenshot_20160718-202234.png

有了显示后,还需要有对应的功能才有意义。一般来说,QS中的tile的功能就是某个功能开关,比如手电筒的开关等,因此这里通常需要实现的就是点击的相应,已经开关状态的显示。

先说点击,这个比较简单,就是override的TileService 的onClick() function. 可以是启动自己的activity等,根据APP需求来编写.

@Override

public void onClick() {

super.onClick();

Log.d("TEST","Launch onClick()")

}

那么怎么更新state呢?这里QS的定义会是两个状态,Tile.STATE_ACTIVE 和 Tile.STATE_INACTIVE, 而这两个状态的设定则是app自己结合你的功能来设定,然后再更新UI,方法基本上类似下面

@Override

public void onClick() {

super.onClick();

num++;

boolean enabled = num % 2 == 0;

Log.d("TEST","Run onClick function with enabled = " + enabled);

getQsTile().setState(enabled ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);

getQsTile().updateTile();

}

另外要注意,这里的ACTIVE和INACTIVE其实就是对图做翻色的一个设定,我没有测试这里是否可以放置非白色的图,但是default都是这种白色的icon,然后反转成黑底的

Screenshot_20160718-210709.png

Screenshot_20160718-210714.png

07-18 21:03:10.437 8692 8692 D TEST : Run onClick function with enabled = f

alse

07-18 21:03:13.715 8692 8692 D TEST : Run onClick function with enabled = t

rue

07-18 21:03:14.941 8692 8692 D TEST : Run onClick function with enabled = f

alse

07-18 21:03:15.656 8692 8692 D TEST : Run onClick function with enabled = t

rue

07-18 21:03:21.745 8692 8692 D TEST : Run onClick function with enabled = f

alse

07-18 21:03:22.531 8692 8692 D TEST : Run onClick function with enabled = t

rue

07-18 21:05:07.896 8692 8692 D TEST : Run onClick function with enabled = f

alse

07-18 21:07:11.244 8692 8692 D TEST : Run onClick function with enabled = t

rue

原理的部分还没有仔细看过,如果有兴趣的同学可以一起讨论学习.

android方法中添加 N,Android N 新功能 - 添加快速设定相关推荐

  1. 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

    文章目录 一.Android 逆向中使用的 android.permission 权限 二.Android 系统中的 Linux 用户权限 一.Android 逆向中使用的 android.permi ...

  2. android图片浏览功能,怎么在Android应用中实现一个网页图片浏览功能

    怎么在Android应用中实现一个网页图片浏览功能 发布时间:2020-12-05 17:28:31 来源:亿速云 阅读:80 作者:Leah 本篇文章给大家分享的是有关怎么在Android应用中实现 ...

  3. 还可以这么玩:盘点iOS 11中Siri的12项新功能

    本文讲的是 还可以这么玩:盘点iOS 11中Siri的12项新功能, iOS 11的首次亮相带来了一些变化,其中包括增强现实游戏和更好的iMessage体验,但或许操作系统在任何方面的改变都不如Sir ...

  4. 在Android studio的一个新建的Activity中添加Toolbar以及相应的功能添加

    Toobar一般用在实现一个APP的很多页面的标题的时候会用到,实现的方法也有很多种. 注意:Toolbar需要在工程中引入appcompat-v7的兼容包,需要使用android.support.v ...

  5. android 唱歌打分源码,Android App中使用RatingBar实现星级打分功能的教程

    RatingBar简单介绍RatingBar是基于SeekBar(拖动条)和ProgressBar(状态条)的扩展,用星形来显示等级评定,在使用默认RatingBar时,用户可以通过触摸/拖动/按键( ...

  6. android支付宝支付微信支付封装,如何在Android App中集成支付宝和微信支付功能

    前言 本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友相信会是一个很好的参考,下面话不多说了,来一起看看详细的介 ...

  7. android如何实现打分功能,Android App中使用RatingBar实现星级打分功能的教程

    RatingBar简单介绍RatingBar是基于SeekBar(拖动条)和ProgressBar(状态条)的扩展,用星形来显示等级评定,在使用默认RatingBar时,用户可以通过触摸/拖动/按键( ...

  8. android phone win10下载,微软Your Phone新功能: 可在Win 10 PC 上运行 Android 应用程序...

    今年 8 月,微软发布了一项 Your Phone 重大功能,可以在 Windows 10 PC 上运行 Android 应用程序.该功能主要通过 Your Phone 应用将 Android 应用投 ...

  9. Android 8.0正式发布 奥利奥新功能惊人

    尽管 Android 刷版本号的步伐年年加快,但每年带给用户的惊喜从未减少.经历了四个开发者预览版的洗礼后,Android 8.0 终于在今天凌晨迎来了正式版发布. 如果你还不清楚 Android O ...

最新文章

  1. 7年半老程序员,被现实击垮……
  2. Android Gatekeeper流程深度解剖
  3. Python爬虫神器pyppeteer
  4. ajax 12301 原因小结
  5. stackoverflow_Stackoverflow的见解:投票最多的是Spring 4问题
  6. 哈工大人工智能研究院院长刘劼:AIoT 核心在“智”不在“联”,需云边端协同...
  7. LINQPad工具-linq、sql、IL优化和转换
  8. Mac下VirtualBox虚拟机Win7与主机共享文件夹
  9. 拒绝枯燥,有意思的 Loading 页面动效设计
  10. c 如何加函数锁linux,Linux下C语言中fcntl函数用法说明
  11. SQL对字符串进行排序
  12. MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)
  13. 非要自己开发一个测试工具不可
  14. php黑名单,php IP黑名单
  15. 05【应用工具简介】PM 流程图,思维导图,原型图绘制?怎么绘制不被解雇?
  16. Python中如何输入一个整数实例
  17. Synonyms 中文近义词工具包 -- 支持文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等
  18. WPF 做的天干地支 乾坤八卦时钟表盘 可以设置24小时制
  19. linux改文件夹e45,linux 编辑文件时 E45: 'readonly' option is set (add ! to override) 隐藏属性 chattr lsattr...
  20. rk3588 驱动调试记录

热门文章

  1. zbb20170824 oracle expdp/impdp 导入导出数据
  2. 深入理解c#(第三版)(文摘)
  3. Linux下使用OTL操作mysql数据库
  4. PHP获取今天开始和结束的时间戳
  5. windows配置nginx实现负载均衡集群
  6. QQ音乐的各种相关API
  7. 在Linux下开发多语言软件(gettext解决方案)
  8. QT cannot open output file debug\OpencvTest.exe: Permission denied
  9. CF 19D Points 【线段树+平衡树】
  10. linux下apache和jboss集群和负载均衡