介绍
appwidgetprovider是AndroID中提供的用于实现桌面小工具的类,其本质是一个广播,即broadcastReceiver,在实际的使用中,把appwidgetprovider当成一个broadcastReceiver即可
1. 为AppWidget提供一个文件定义小控件的基本配置信息
在资源文件夹res目录下新建xml文件夹,添加app_Widget_provIDer_info.xml文件内容为:
<?xml version="1.0" enCoding="utf-8"?> <!--小控件宽高--> <!--androID:minWIDth="40dp"--> <!--androID:minHeight="40dp"--> <!--更新时间--> <!--androID:updatePeriodMillis="86400000"--> <!--用于指定预览图片。即搜索到Widget时,查看到的图片。若没有设置的话,系统为指定一张默认图片。--> <!--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. 创建一个WidgetProvIDer继承自appwidgetprovider;
public class Myappwidgetprovider extends appwidgetprovider { //没接收一次广播消息就调用一次,使用频繁 public voID onReceive(Context context,Intent intent) { super.onReceive(context,intent); } //每次更新都调用一次该方法,使用频繁 public voID onUpdate(Context context,AppWidgetManager appWidgetManager,int[] appWidgetIDs) { super.onUpdate(context,appWidgetManager,appWidgetIDs); } //没删除一个就调用一次 public voID onDeleted(Context context,int[] appWidgetIDs) { super.onDeleted(context,appWidgetIDs); } //当该Widget第一次添加到桌面是调用该方法,可添加多次但只第一次调用 public voID onEnabled(Context context) { super.onEnabled(context); } //当最后一个该Widget删除是调用该方法,注意是最后一个 public voID onDisabled(Context context) { super.onDisabled(context); }}
3. 为 WidgetProvIDer创建一个布局文件
布局为常见布局
<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 节点,Meta-data 节点的name 为固定格式,resource为第一步定义的配置信息,intent-filter节点第三个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绑定监听器,使用RemoteVIEws在Myappwidgetprovider的onUpdate()方法中为Botton绑定监听器
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android控件AppWidgetProvider使用方法详解全部内容,希望文章能够帮你解决Android控件AppWidgetProvider使用方法详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)