关闭

Android7.0 添加快速设定Quick Settings Tile

标签: android手机新特性快速设定
3134人阅读 评论(1) 收藏 举报
分类:

Android7.0新推出了一个非常实用的功能——添加快速设定(或者翻译成快速设置),但是感觉社区里关注的人比较少,可能目前为止国内还没有Android7.0的手机,但是越早接触越好,甚至可以告诉产品经理7.0以上可以实现此功能,从而让公司的产品更加与时俱进。

“快速设置”通常用于直接从通知栏显示关键设置和操作,非常简单。在Android 7.0以后任何应用都可以在下拉菜单中添加自己的快速设定,从而让程序更加灵活方便。
这里写图片描述

对于用户来讲:
Google工程师为额外的“快速设置”图块添加了更多空间,用户可以通过向左或向右滑动跨分页的显示区域访问它们。 我们还让用户可以控制显示哪些“快速设置”图块以及显示的位置 — 用户可以通过拖放图块来添加或移动图块。

这里写图片描述

这里写图片描述

对于开发者,Android 7.0 还添加了一个新的 API,从而让您可以定义自己的“快速设置”图块,使用户可以轻松访问您应用中的关键控件和操作。

添加快速设定实现方式

我们重点来看看如何实现快速设定。

首先需要创建一个类继承 TileService,这是一个特殊的服务,这个TileService是7.0 SDK新加的,所以务必SDK更新到7.0,这个服务不需要程序开启,系统默认能够识别,并调用,所以在低版本上运行这个程序也不会有问题。

可以实现几个生命周期相关的函数,也可以选择实现

public class QuickSettingService extends TileService{
    //当用户从Edit栏添加到快速设定中调用
    @Override
    public void onTileAdded() {
        Log.d(LOG_TAG, "onTileAdded");
    }
    //当用户从快速设定栏中移除的时候调用
    @Override
    public void onTileRemoved() {
        Log.d(LOG_TAG, "onTileRemoved");
    }
    // 点击的时候
    @Override
    public void onClick() {
        Log.d(LOG_TAG, "onClick");
    }
    // 打开下拉菜单的时候调用,当快速设置按钮并没有在编辑栏拖到设置栏中不会调用
    //在TleAdded之后会调用一次
    @Override
    public void onStartListening () {
        Log.d(LOG_TAG, "onStartListening");
    }
    // 关闭下拉菜单的时候调用,当快速设置按钮并没有在编辑栏拖到设置栏中不会调用
    // 在onTileRemoved移除之前也会调用移除
    @Override
    public void onStopListening () {
        Log.d(LOG_TAG, "onStopListening");
    }

}

因为这个类本身就是服务, 需要配置在清单文件AndroidManifest.xml中

<application
     ...>
  ...
  <service android:name=".QuickSettingService"
       android:label="快速设定"
       android:icon="@drawable/ic_videocam"
       android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
        <intent-filter>
              <action android:name="android.service.quicksettings.action.QS_TILE"/>
          </intent-filter>
   </service>
</application>

从上面的声明中,其实已经比较明显,这个Tile要显示的名字,icon等都是在这里声明的,系统UI直接就可以查询到,特别注意这里一定要加上对应的permission才行。

接下来运行程序,就可以在下拉菜单的编辑栏中看到我们的图标,可以拖拽到上面的一栏就会在快速设定中

这里写图片描述
有了显示,还需要有具体功能,这时候一般都通过设置按钮实现了。
直接上完整代码了:

//继承TileService
public class QuickSettingService extends TileService{
    private final int STATE_OFF = 0;
    private final int STATE_ON = 1;
    private final String LOG_TAG = "QuickSettingService";
    private int toggleState = STATE_ON;
    //当用户从Edit栏添加到快速设定中调用
    @Override
    public void onTileAdded() {
        Log.d(LOG_TAG, "onTileAdded");
    }
    //当用户从快速设定栏中移除的时候调用
    @Override
    public void onTileRemoved() {
        Log.d(LOG_TAG, "onTileRemoved");
    }
    // 点击的时候
    @Override
    public void onClick() {
        Log.d(LOG_TAG, "onClick state = " + Integer.toString(getQsTile().getState()));
        Icon icon;
        if (toggleState == STATE_ON) {
            toggleState = STATE_OFF;
            icon =  Icon.createWithResource(getApplicationContext(), R.drawable.ic_videocam_off);
            getQsTile().setState(Tile.STATE_INACTIVE);// 更改成非活跃状态
        } else {
            toggleState = STATE_ON;
            icon = Icon.createWithResource(getApplicationContext(), R.drawable.ic_videocam);
            getQsTile().setState(Tile.STATE_ACTIVE);//更改成活跃状态
        }

        getQsTile().setIcon(icon);//设置图标
        getQsTile().updateTile();//更新Tile
    }
    // 打开下拉菜单的时候调用,当快速设置按钮并没有在编辑栏拖到设置栏中不会调用
    //在TleAdded之后会调用一次
    @Override
    public void onStartListening () {
        Log.d(LOG_TAG, "onStartListening");
    }
    // 关闭下拉菜单的时候调用,当快速设置按钮并没有在编辑栏拖到设置栏中不会调用
    // 在onTileRemoved移除之前也会调用移除
    @Override
    public void onStopListening () {
        Log.d(LOG_TAG, "onStopListening");
    }

}

通过getQsTile() 可以设置State和Icon,State有两种状态——STATE_ACTIVE和STATE_INACTIVE, 无论你传的什么颜色的Icon,STATE_ACTIVE都会把Icon渲染成白色, STATE_INACTIVE都会把Icon渲染成灰色。

效果展示:

这里写图片描述

更多精彩请关注微信公众账号likeDev
这里写图片描述

1
0
查看评论

Android-快速设置-Quick settings tile

Android7.0的Quick settings tile在Android7.0之后,任何程序都可以设置屏幕顶部下拉的设置了,为应用的快捷设置提供了极大的方便。什么是优秀的快速设置什么设置适合作为Quick settings tile,有两个关键要素:紧迫性和高频。 大家注意,因为这是一个常...
  • jy03773322
  • jy03773322
  • 2016-10-12 18:56
  • 2868

Android自定义快速设置

Android自定义快速设置 Customizer Quick Setting 自定义快速设置 Android N/7.0 牛轧糖 Android自定义快速设置 前言 自定义快速设置图块 深入理解TileService TileService的结构 TileService的...
  • myfriend0
  • myfriend0
  • 2017-02-21 11:47
  • 10920

如何在quicksettings中增加一个新的buttons

如何在quicksettings中增加一个新的buttons,下面主要是android L版本前(如KK)和android L版本 一,android L版本前(如KK): 下面就以在quicksettings中新增一个mms button为例。 1、新增layout文件 framework...
  • wds1181977
  • wds1181977
  • 2015-10-26 10:40
  • 2989

Android 6.0 Marshmallow 通知栏中QuickSetting分析

在SystemUI中,状态栏和通知栏都是在PhoneStatusBar的makeStatusBarView方法添加进来的,这里主要说说状态栏中的QuickSettingPanel里各个图标的显示,以及各个控件的功能实现
  • yin1031468524
  • yin1031468524
  • 2016-05-29 18:12
  • 4685

android 7.0中Settings新功能全面解析

Settings N预览android N 在Settings中作了一些调整,如上面的截图。 - 增加了侧滑菜单,采用v4下的DrawerLayout来实现; - 在Settings主界面增加了Condition,能够在设置列表中显示状态; - 在Settings主界面增加了Suggestio...
  • H_Gao
  • H_Gao
  • 2017-02-27 19:26
  • 8428

android quick settings中去掉不需要的图标

在frameworks/base/packages/systemui/res/values/config.xml这个文件中有如下配置: wifi,bt,inversion,cell,airplane,rotation,flashlight,location,cast,hotspot 分配对应着...
  • xl19862005
  • xl19862005
  • 2016-06-28 19:55
  • 934

android:动态创建多个按钮 并给每个按键添加监听事件

//获取屏幕大小,以合理设定 按钮 大小及位置   DisplayMetrics dm = new DisplayMetrics();   getWindowManager().getDefaultDisplay().getMetrics(dm);  &...
  • lihengfang
  • lihengfang
  • 2012-11-20 16:02
  • 31956

Android 7.0&8.0 Quick Settings 添加一个新项

这里主要介绍怎么在QS中添加一个新的项,新选项的主要功能就是修改Settings数据库。1.在config.xml中添加新选项 frameworks\base\packages\SystemUI\res\values\config.xml
  • Aaron121314
  • Aaron121314
  • 2017-07-10 15:55
  • 1596

【译】Quick Settings Tiles on Android 7.0

用户可以打开app是在2008年。早期的Android中就提供了小部件和通知,即使app没有打开,小部件和通知提供的额外面板也能用来显示重要的开关和信息。在新的Android 7.0(API 24)中,任何应用都可以创建快速设置图块(tile),以便快速访问通知托盘上可用功能的重要信息。
  • aaa111
  • aaa111
  • 2017-03-28 19:19
  • 794

Android QuickSetting---手电筒控制

今天遇到问题 打开手电筒,再进入相机下拉通知栏中有手电筒已开启的提示。现总结与手电筒相关的知识点。 在下拉通知栏打开手电筒的代码位于“frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile...
  • Frakie_Kwok
  • Frakie_Kwok
  • 2017-04-10 09:57
  • 982
    个人资料
    • 访问:222972次
    • 积分:2631
    • 等级:
    • 排名:第16333名
    • 原创:74篇
    • 转载:1篇
    • 译文:0篇
    • 评论:238条
    关于我
    我的新书
    《爱上Android》已经出版
    本书绝不中庸,全是实用技术

    购买地址

    京东 天猫
    博客专栏
    最新评论