SystemUI 创建 Tile 流程, 添加Tile

system UI预置的(QSTile),第三方应用添加的(CustiomTile  7.0 才有的)

一、 创建自定义的Tile

 


二、Tile加载流程

Tile中方法
handleClick() 短按
getLongClickIntent() 长按
handleUpdateState() 更新状态
handleSecondaryClick() 点击开关label显示详情页
getToggleState() 若返回null详情页不显示switch开关。
getSettingsIntent() 跟长按的intent一样进入设置对应的界面。若返回null详情页不显示详细信息。

(1)    动作的监听响应:
       在handleClick() 方法里处理点击事件;打开/关闭的动画也在这里调用;
     部分开关需要重写handleSecondaryClick() 方法,例如Wi-Fi和蓝牙开关,在handleSecondaryClick() 方法里打开详情页面;
     还有开关需要重写handleLongClick() ,例如反色和热点开关,在这里打开询问是否要隐藏的对话框;
     在setListening() 方法里添加回调监听,接受action和注册广播等。

(2)    状态的管理:
      状态管理通过一个由Host提供的looper来进行。
          每个快捷开关在handleUpdateState()中更新状态。回调影响状态要通过快捷开关的工作looper调用refreshState() 来触发另一个状态更新。
     
          状态类有三种,State类以及继承自State类的BooleanState类和SignalState类。需要判断开关与否的状态的快捷开关继承QSTile<QSTile.BooleanState>,
      包括飞行模式、反色、手电筒、热点、定位、自动旋转、蓝牙和屏幕投射开关等;还需要判断连接等状态的快捷开关继承QSTile<QSTile.SignalState>,例如Wi-Fi和移动数据网络开关;其他直接继承QSTile<QSTile.State>。
    (3)    另外,Wi-Fi和蓝牙开关需要重写supportsDualTargets() 方法和getDetailAdapter() 方法。因为这两个开关是绘制在一排两个开关的布局上而且需要显示详情页面。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李磊LL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值