android 7.0 settings图标更改,Android7.0快捷图标:Quick Settings Tile

本文详细介绍了如何在Android中创建并实现一个自定义的快速设置瓷砖服务(TileService),包括服务的生命周期方法、点击事件处理、状态切换以及与用户交互的技巧。在服务中,你可以设置图标、标签,并在用户点击时执行相应操作,如启动Activity或Dialog。同时,文章提到了如何处理锁屏状态下的限制,并展示了如何重载长按瓷砖的行为以及与其他服务的交互方式。
摘要由CSDN通过智能技术生成

实现效果:

dd41353c68dbee9b5853c6279f484b9b.png  dd1e4c5786b2cea154615865c704ef94.png

其实很简单,实现过程:

1、写一个服务继承TileService,里面实现四个方法:

public class MyTileService extends TileService {

final String LOG_TAG = "MyTileService";

@Override

public void onTileAdded() {

//当用户从Edit栏添加到快速设置中调用

Log.d(LOG_TAG, "onTileAdded");

}

@Override

public void onTileRemoved() {

//当用户从快速设置栏中移除的时候调用

Log.d(LOG_TAG, "onTileRemoved");

}

@Override

public void onClick() {

// 点击的时候

Log.d(LOG_TAG, "onClick");

int state = getQsTile().getState();

if (state == Tile.STATE_INACTIVE) {

// 更改成非活跃状态 (还有一个参数:STATE_UNAVAILABLE 非可点击状态)

getQsTile().setState(Tile.STATE_ACTIVE);

} else {

//更改成活跃状态

getQsTile().setState(Tile.STATE_INACTIVE);

}

//可以点击设置图标,设置方式如下:

//Icon icon = Icon.createWithResource(getApplicationContext(), R.drawable.xxxx);

//getQsTile().setIcon(icon);

//设置label:

//getQsTile.setLabel("");

//更新Tile

getQsTile().updateTile();

}

@Override

public void onStartListening () {

// 打开下拉通知栏的时候调用,当快速设置按钮并没有在编辑栏拖到设置栏中不会调用

//在TleAdded之后会调用一次

Log.d(LOG_TAG, "onStartListening");

}

@Override

public void onStopListening () {

// 关闭下拉通知栏的时候调用,当快速设置按钮并没有在编辑栏拖到设置栏中不会调用

// 在onTileRemoved移除之前也会调用移除

Log.d(LOG_TAG, "onStopListening");

}

}

2、AndroidManifest.xml里面注册服务:

说明:

图标需要一个白色前景+透明背景的图标,它自动会给你设置开关颜色。Title多余18个字符会被截断

可以在程序中的其他地方调用TileService.requestListeningState() 来触发 onStartListening函数

如果想要一开始就是打开状态,可以将Tile的Mode改为主动模式:

...

在OnClick() 中,我们可以在UI线程上处理业务逻辑,耗时操作请交给另一个线程或IntentService执行。

其中我们可以开启Dialog或通过startActivityAndCollapse()开启一个Actvitiy。

但是在锁屏,也就是isLocked()返回true时,将不能打开Dialog,而Activity则需要增加FLAG_SHOW_WHEN_LOCKED这个Flag。

我们也可以使用unlockAndRun(Runnable) 来异步设置用户解锁后的工作。

用户长按Tile会默认打开app的app info页面,我们可以给Activity加上ACTION_QS_TILE_PREFERENCES 来重载此行为。

此Service与其他Service可通过绑定服务进行交互,也可使用广播做交互。

完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值