当前位置:网站首页>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();
}
}
疑问
我本来想自己控制按钮的颜色,比如点击按钮,按钮背景色改变成想要的颜色,但是没找到。。。。
边栏推荐
- Js获取当前页面url参数
- Flutter强大的下拉筛选菜单gzx_dropdown_menu
- Access Huawei game anti-addiction, click the anti-addiction pop-up window, the game crashes
- Do you understand the various configurations in the project?
- 【PHP实现微信公众平台开发—基础篇】第1章 课程介绍
- 两个数组中用第二个数组的Value对比换第一个数组中的Key
- 外置USB供电与内置锂电池供电自动切换电路
- 面试官:连 INSERT INTO SET 都不知道怎么用,你这3年都干些什么了?
- 云原生Devops 的实现方法
- 形态学(膨胀、腐蚀)
猜你喜欢
随机推荐
ShanDong Multi-University Training #4 A、B、C、G
[牛客网]OR63删除公共字符
WPF---Grid布局讲解
Two years of independent development experience Programmers tell us the experience of making money (listen to the masters who really make money)
Focus!2022 interview must brush 461 interview questions summary + interview + resume template
项目里的各种配置,你都了解吗?
外置USB供电与内置锂电池供电自动切换电路
A Collection of Flutter Tutorials (2022 Edition)
Yolov5 test and train own dataset
【黑马早报】尚乘数科上市13天,市值超阿里;北大终止陈春花聘用合同;新东方花近200亿退学费和遣散费;张小泉75%产品贴牌代工...
缓存字符流
【全网首发】Redis系列5:深入分析Cluster 集群模式
罗振宇的A股梦,咋这么难圆?
#夏日挑战赛#OpenHarmony 给你的输入法加点彩—星球崛起
免费翻译软件哪个好用
广告电商系统开发
动规(18)-并查集基础题——团伙
博云入选 Gartner 中国 DevOps 代表厂商
【自动微分实现】反向OO实现自动微分(Pytroch核心机制)
Geoffrey Hinton:深度学习的下一个大事件