Android N version 其中一個功能墅诡,就是允許三方app可以添加自己的快速設定丑婿,到系統(tǒng)的下拉設定中,方便用戶快速打開關閉某些功能.
廢話不多說,直接上代碼來講解.
- 創(chuàng)建一個class奶镶,繼承自TileService迟赃,這個TileService是N SDK新加的,所以務必SDK更新到N version
public class TestTile extends TileService {
@Override
public void onStartListening() {
super.onStartListening();
}
@Override
public void onStopListening() {
super.onStopListening();
}
@Override
public void onClick() {
super.onClick();
}
}
這里的override方法之后會再詳細介紹.
- 建完service后厂镇,需要在manifest中聲明纤壁,這樣才能被系統(tǒng)SystemUI query到
<service android:name=".TestTile"
android:label="@string/tile_label"
android:icon="@drawable/ic_zen"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE"/>
</intent-filter>
</service>
從上面的聲明中,其實已經(jīng)比較明顯捺信,這個Tile要顯示的名字酌媒,icon等都是在這里聲明的迄靠,特別注意這里一定要加上對應的permission才行.
- 下來可以先看下實際效果雨席,下拉后再Q(mào)uick Setting中會有個Edit陡厘,點擊后往下滑動,三方APP定義的QS tile就會都顯示罢低,可以通過拖拽放到常用設定中.
- 有了顯示后,還需要有對應的功能才有意義功舀。一般來說,QS中的tile的功能就是某個功能開關帖汞,比如手電筒的開關等,因此這里通常需要實現(xiàn)的就是點擊的相應催首,已經(jīng)開關狀態(tài)的顯示秧耗。
先說點擊,這個比較簡單杂抽,就是override的TileService 的onClick() function. 可以是啟動自己的activity等赡矢,根據(jù)APP需求來編寫.
@Override
public void onClick() {
super.onClick();
Log.d("TEST","Launch onClick()")
}
那么怎么更新state呢弧械?這里QS的定義會是兩個狀態(tài),Tile.STATE_ACTIVE 和 Tile.STATE_INACTIVE, 而這兩個狀態(tài)的設定則是app自己結合你的功能來設定浊猾,然后再更新UI衔彻,方法基本上類似下面
@Override
public void onClick() {
super.onClick();
num++;
boolean enabled = num % 2 == 0;
Log.d("TEST","Run onClick function with enabled = " + enabled);
getQsTile().setState(enabled ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
getQsTile().updateTile();
}
另外要注意,這里的ACTIVE和INACTIVE其實就是對圖做翻色的一個設定,我沒有測試這里是否可以放置非白色的圖,但是default都是這種白色的icon,然后反轉成黑底的
07-18 21:03:10.437 8692 8692 D TEST : Run onClick function with enabled = f
alse
07-18 21:03:13.715 8692 8692 D TEST : Run onClick function with enabled = t
rue
07-18 21:03:14.941 8692 8692 D TEST : Run onClick function with enabled = f
alse
07-18 21:03:15.656 8692 8692 D TEST : Run onClick function with enabled = t
rue
07-18 21:03:21.745 8692 8692 D TEST : Run onClick function with enabled = f
alse
07-18 21:03:22.531 8692 8692 D TEST : Run onClick function with enabled = t
rue
07-18 21:05:07.896 8692 8692 D TEST : Run onClick function with enabled = f
alse
07-18 21:07:11.244 8692 8692 D TEST : Run onClick function with enabled = t
rue
原理的部分還沒有仔細看過摘仅,如果有興趣的同學可以一起討論學習.