android7添加小工具,为Android应用添加桌面小工具(App Widget)
這里根據官方參考文檔簡單介紹為Android應用添加桌面小工具的方法,詳情請查閱官方參考文檔。(“Widget”中文的意思是“小工具”、“小部件”、“窗口小部件”的意思。)
桌面小工具可以讓用戶直接在桌面上操作應用的部件功能,例如音樂播放器的小工具可以讓用戶方便地播放或者暫停音樂,又例如最常見的天氣時間桌面小工具。越來越多的應用添加了桌面小工具的功能。
為應用添加桌面小工具的大概流程1\. 新建一個布局文件,即桌面小工具的視圖;
2\. 新建一個XML文件,該文件包含有桌面小工具相關信息,例如小工具的布局、更新頻率等 ;
3\. 定義一個類,這個類要繼承AppWidgetProvider類,并且實現相關方法。
為應用添加桌面小工具的詳細流程
第一步:新建一個布局文件,即在res/layout/下新建一個layout布局文件,例如desktop_widget.xml,代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13< ?xml version="1.0" encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ON"
android:textSize="20sp">
第二步:在res/xml/下新建一個XML文件,例如新建一個名為desktop_widget_info.xml文件,這個XML文件包含了桌面小工具的一些重要元數據,內容如下:
1
2
3
4
5
6
7
8
9
10< ?xml version="1.0" encoding="utf-8"?>
android:minWidth="40dp"
android:minHeight="40dp"
android:updatePeriodMillis="48000000"
android:previewImage="@drawable/pre_widget"
android:initialLayout="@layout/desktop_widget"
android:resizeMode="horizontal|vertical"
android:widgetCategory="home_screen|keyguard">
參數說明:
minWidth、minHeight:分別指定小工具的默認寬度和高度,關于小工具大小的規格說明:
單元
尺寸
1
40dp
2
110dp
3
180dp
4
250dp
n
70*n - 30
具體請參考:http://developer.android.com/guide/practices/ui_guidelines/widget_design.html#anatomy_determining_size
updatePeriodMillis:小工具更新的頻率,單位是毫秒。
previewImage:小工具預覽圖。
initialLayout:小工具的布局文件。
resizeMode:可以設置小工具的可調整方向,如水平或者垂直。
widgetCategory:小工具可顯示的位置,如桌面或者鎖屏界面。
第三步:新建一個繼承了AppWidgetProvider的類,并且實現相關方法。例如我新建了一個名為DesktopWidget.class的類。其實桌面小工具是基于Broadcast的形式實現的,每一個桌面小工具都對應于一個BroadcastReceiver類。而AppWidgetProvider類是BroadcastReceiver的子類,桌面小工具只需要繼承AppWidgetProvider類并實現相關方法即可。
在AndroidManifest.xml中添加如下內容:
1
2
3
4
5
6
7
8
android:name="android.appwidget.provider"
android:resource="@xml/desktop_widget_info" />
請注意meta-data標簽下的android:resource指定的是第二步中新建的XML文件。
下面開始實現這個DesktopWidget.class類,代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71/*
* 桌面小工具
* @author Garth http://garth.im
*/
public class DesktopWidget extends AppWidgetProvider{
private static RemoteViews remoteViews;
/**
* 調用時機: 1.到達指定的更新時間 2.用戶向桌面添加appwidget時候
* 系統會發出一個android.appwidget.action.APPWIDGET_UPDATE廣播
* 根據AndroidManifest.xml注冊信息,啟動widgetProvider,然后AppWidgetProvider接收
* 到廣播后,調用onUpdate方法初始化
*/
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds){
remoteViews = new RemoteViews(context.getPackageName(), R.layout.desktop_widget);
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
remoteViews.setOnClickPendingIntent(R.id.tvWidget, pendingIntent);
if(MainService.state){
remoteViews.setTextViewText(R.id.tvWidget, "ON");
}else{
remoteViews.setTextViewText(R.id.tvWidget, "OFF");
}
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
/**
* 當App Widget被刪除時被調用。
*/
@Override
public void onDeleted(Context context, int[] appWidgetIds){
super.onDeleted(context, appWidgetIds);
}
/**
* 同一個App Widget實例第一次創建時被調用。
* 比如,如果用戶添加兩個App Widget實例,只在第一次被調用。
* 如果你需要打開一個新的數據庫或者執行其他對于所有的App Widget實例只需要發生一次的設置,
* 那么就在這個方法里定義吧
*/
@Override
public void onEnabled(Context context){
super.onEnabled(context);
}
/**
* 當你的App Widget的最后一個實例被刪除時被調用。
* 如果有數據庫連接等操作,可以在這里關閉掉吧。
*/
@Override
public void onDisabled(Context context){
super.onDisabled(context);
}
/**
* 接收到每個廣播時都會被調用,而且在上面的回調函數之前。
* 通常不需要實現這個方法,因為默認的AppWidgetProvider已經過濾所有App Widget廣播并恰當的調用上述方法。
*/
@Override
public void onReceive(Context context, Intent intent){
super.onReceive(context, intent);
}
}
總結
以上是生活随笔為你收集整理的android7添加小工具,为Android应用添加桌面小工具(App Widget)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10 悬浮日历_win10系统桌面
- 下一篇: android sina oauth2.