日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android7添加小工具,为Android应用添加桌面小工具(App Widget)

發布時間:2023/12/31 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。