Android控件AppWidgetProvider使用方法詳解
介紹
AppWidgetProvider是Android中提供的用于實現(xiàn)桌面小工具的類,其本質(zhì)是一個廣播,即BroadcastReceiver,在實際的使用中,把AppWidgetProvider當成一個BroadcastReceiver即可
1. 為AppWidget提供一個文件定義小控件的基本配置信息
在資源文件夾res目錄下新建xml文件夾,添加app_widget_provider_info.xml文件內(nèi)容為:
<?xml version="1.0" encoding="utf-8"?> <!--小控件寬高--> <!--android:minWidth="40dp"--> <!--android:minHeight="40dp"--> <!--更新時間--> <!--android:updatePeriodMillis="86400000"--> <!--用于指定預覽圖片。即搜索到widget時,查看到的圖片。若沒有設(shè)置的話,系統(tǒng)為指定一張默認圖片。--> <!--android:previewImage="@drawable/widget_flashlight"--> <!--widget 添加到手機主屏幕中的layout--> <!--android:initialLayout="@layout/flash_light_widget"--> <!--android:resizeMode : widget可以被拉伸的方向。horizontal表示可以水平拉伸,vertical表示可以豎直拉伸--> <!--android:resizeMode="horizontal|vertical"--> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="40dp" android:minHeight="40dp" android:updatePeriodMillis="86400000" android:previewImage="@drawable/ic_launcher" android:initialLayout="@layout/widget_layout" android:resizeMode="horizontal|vertical"> </appwidget-provider>
2. 創(chuàng)建一個WidgetProvider繼承自AppWidgetProvider;
public class MyAppWidgetProvider extends AppWidgetProvider {
//沒接收一次廣播消息就調(diào)用一次,使用頻繁
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
//每次更新都調(diào)用一次該方法,使用頻繁
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
//沒刪除一個就調(diào)用一次
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
//當該Widget第一次添加到桌面是調(diào)用該方法,可添加多次但只第一次調(diào)用
public void onEnabled(Context context) {
super.onEnabled(context);
}
//當最后一個該Widget刪除是調(diào)用該方法,注意是最后一個
public void onDisabled(Context context) {
super.onDisabled(context);
}
}
3. 為 WidgetProvider創(chuàng)建一個布局文件
布局為常見布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="64dp"
android:layout_height="64dp"
>
<ImageButton
android:id="@+id/widget_led"
android:layout_margin="2dp"
android:background="@drawable/widget_led"
android:src="@drawable/ic_launcher"
android:scaleType="center"
android:layout_width="64.0dip"
android:layout_height="64.0dip" />
</RelativeLayout>
4. 注冊Manifest.xml
配置基本和廣播一樣,使用receiver 節(jié)點,meta-data 節(jié)點的name 為固定格式,resource為第一步定義的配置信息,intent-filter節(jié)點第三個action必須提供
<receiver android:name=".jf.jfclean.widget.FlashLightWidget">
<intent-filter>
<action android:name="action_led_on" />
<action android:name="action_led_off" />
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/flash_light_widget_info" />
</receiver>
5. 使用PendingIntent和RemoteViews對AppWidget綁定監(jiān)聽器,使用RemoteViews在MyAppWidgetProvider的onUpdate()方法中為Botton綁定監(jiān)聽器
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實現(xiàn)仿Windows7圖片預覽窗格效果
這篇文章主要為大家詳細介紹了Android實現(xiàn)仿Windows7圖片預覽窗格效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Android 如何實現(xiàn)動態(tài)申請權(quán)限
這篇文章主要介紹了Android 如何實現(xiàn)動態(tài)申請權(quán)限。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

