当前位置:网站首页>Systemui qsSetting添加新图标
Systemui qsSetting添加新图标
2022-08-04 12:28:00 【纵容_伊人倩影】
参考文章
https://blog.csdn.net/h1217256980/article/details/105726771
补充
按照文章中的可以实现效果,本文针对第一点自定义类做一些细化。
新增按钮其实比较简单,因为原生框架已经搭建好了,我们只要集成实现关键方法就可以了。
QS添加按钮主要注意以下己点:
1、按钮状态(打开、关闭、不可用)
2、点击事件
3、长按事件
4、状态更新
西瓜桶
------因为这一天同事请我喝了一杯西瓜桶奶茶,刚好我在做添加新按钮,所以这个demo就叫这个名字了~!哈哈哈
demo代码仅供参考,因为Android大版本不同,构造方法和实现父类方法可能有一些区别。
package com.android.systemui.qs.tiles;
import android.content.Intent;
import android.graphics.Color;
import android.media.AudioManager;
import android.service.quicksettings.Tile;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import javax.inject.Inject;
public class XiGuaTong extends QSTileImpl<QSTile.BooleanState> {
int index = 0;
int[] color = {
Color.BLUE,Color.DKGRAY,Color.YELLOW};
@Inject
protected XiGuaTong(QSHost host) {
super(host);
}
@Override
public BooleanState newTileState() {
BooleanState state = new BooleanState();
state.label = this.getClass().getSimpleName();
state.handlesLongClick = false;
return state;
}
@Override
protected void handleClick() {
index++;
refreshState();
}
@Override
protected void handleUpdateState(BooleanState state, Object arg) {
state.state = index%4 == 3? Tile.STATE_INACTIVE: Tile.STATE_ACTIVE;
state.secondaryLabel = String.valueOf(index);
state.label = this.getClass().getSimpleName();
switch (index%4) {
case 0:
state.icon = new DrawableIcon(mContext.getDrawable(com.android.systemui.R.drawable.ic_volume_ringer));
break;
case 1:
state.icon = new DrawableIcon(mContext.getDrawable(com.android.systemui.R.drawable.ic_volume_ringer_vibrate));
break;
case 2:
state.icon = new DrawableIcon(mContext.getDrawable(com.android.systemui.R.drawable.ic_volume_ringer_mute));
break;
case 3:
break;
default:
break;
}
// int color = this.color[index%3];
}
@Override
public int getMetricsCategory() {
return 0;
}
@Override
public Intent getLongClickIntent() {
//
return null;
}
@Override
public CharSequence getTileLabel() {
return this.getClass().getSimpleName();
}
}
疑问
我本来想自己控制按钮的颜色,比如点击按钮,按钮背景色改变成想要的颜色,但是没找到。。。。
边栏推荐
猜你喜欢

RobotFramework二次开发(一)

移动跨端技术方案分析对比

MySQL - Explain explanation

DC/DC电感底部要不要覆铜?

十一、网络规划设计

集群监控——Zabbix

Why is Luo Zhenyu's A-share dream so difficult to fulfill?

【黑马早报】尚乘数科上市13天,市值超阿里;北大终止陈春花聘用合同;新东方花近200亿退学费和遣散费;张小泉75%产品贴牌代工...

新消费、出海、大健康......电子烟寻找“避风港”

Motion Rule (16)-Union Check Basic Questions-Grid Game
随机推荐
技术分享| 融合调度系统中的电子围栏功能说明
动规(16)-并查集基础题——格子游戏
#夏日挑战赛#OpenHarmony 给你的输入法加点彩—星球崛起
Hit the interview!The latest interview booklet of Ali Jin, nine silver and ten is stable!
直击面试!阿里金九银十最新面试小册 稳过!
飞书更新招聘功能 候选人可选择面试时间
论文翻译:2022_Time-Frequency Attention for Monaural Speech Enhancement
A comprehensive understanding of MOS tubes, an article is enough
"Lonely Walking on the Moon" is a powerful medicine, it can't cure the internal friction of happy twist
TensorFlow学习记录(三):高阶操作 & 神经网络与全连接层
广告电商系统开发
技术分享| 小程序实现音视频通话
Geoffrey Hinton:深度学习的下一个大事件
中电资讯 - 一路“标”升,喜迎Q3开门红
Oracle 19c 单实例 19.3.0 升级到19.11.0 详细教程
聪明的儿子处理婆媳关系的方法(处理婆媳关系的方法)
程序猿七夕礼物-如何30分钟给女友快速搭建专属语聊房
监督和半监督学习下的多标签分类综述
Flutter强大的下拉筛选菜单gzx_dropdown_menu
Js获取当前页面url参数