appWidget开发实例
来源:互联网 发布:厦门公安局网络刻章 编辑:程序博客网 时间:2024/06/07 08:28
AppWidget框架类
widget 就是桌面小部件,首先我们来简单的介绍一下AppWidget的框架类。主要包括以下四个。
AppWidgetProvider-----------基于BrodCast事件操作的AppWidget的接口,当appwidget应用update,enable,disable,delete时候,通过他们可以接收到BrodCast事件。其中onUpdate、OnReceive是常用的方法,用于接收更新通知。
AppWidgetProvderInfo---------用于描述Appwidget的元数据对象,如大小,更新频率、初始化界面和AppWidgetProvider类等信息。以xml的形式存在于res/xml的文件夹下面。
AppWidgetManager---------管理appwidget,像appwidgetprovider发送通知。
RemoteViews--------可以在其他应用进程中运行的类,像AppWidgetProvider发送通知。
开发实例
首先新建一个工程,然后在layout文件夹下写好widget的布局文件这里我们命名为appwidgetlayout.xml,就是显示在桌面上的布局。不过要注意的是并不是所有的控件widget都支持。目前支持的有FrameLayout、LinearLayout、RelativeLayout、AnalogClock、Button 、Chronometer 、ImageButton、ImageView 、ProgessBar、TextView、ViewFlipper..首先给出的是布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ffffff" /></LinearLayout>
然后就是配置我们的widget在res文件夹下面新建一个xml文件夹在里面新建一个配置文件我们命名为appwidget1.xml
<?xml version="1.0" encoding="utf-8"?><appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minHeight="200dp" android:minWidth="200dp" android:initialLayout="@layout/appwidgetlayout" android:updatePeriodMillis="888888" ></appwidget-provider>最后就是编写代码来控制了。这里我们继承AppWidgetProvider然后我们来看看代码的实现。
public class MyAppWidgetProvider extends AppWidgetProvider {private final String brodCastString="com.bobo.widgetupdate";//删除一个widget时候调用@Overridepublic void onDeleted(Context context, int[] appWidgetIds) {// TODO Auto-generated method stubsuper.onDeleted(context, appWidgetIds);}//最后一个widget删除的时候调用@Overridepublic void onDisabled(Context context) {// TODO Auto-generated method stubsuper.onDisabled(context);}//第一次创建的时候调用@Overridepublic void onEnabled(Context context) {// TODO Auto-generated method stubsuper.onEnabled(context);}/** * 接收广播事件 */@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubsuper.onReceive(context, intent);if(intent.getAction().equals(brodCastString)){RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidgetlayout);AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);ComponentName componentName = new ComponentName(context, MyAppWidgetProvider.class);remoteViews.setTextViewText(R.id.text, "点击");appWidgetManager.updateAppWidget(componentName, remoteViews);}}//到达指定更新时间或者用户向桌面添加widget时候调用@Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {// TODO Auto-generated method stubsuper.onUpdate(context, appWidgetManager, appWidgetIds);Intent intent = new Intent();intent.setAction(brodCastString);PendingIntent intent2 = PendingIntent.getBroadcast(context, 0, intent, 0);RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidgetlayout);remoteViews.setOnClickPendingIntent(R.id.send, intent2);remoteViews.setTextViewText(R.id.text, "hehe");appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);}}
最有需要在我们的androidmainifest文件里面注册我们的广播。
<receiver android:name="com.example.remoteviewdemo.MyWidgetProvider" > <meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidgetprovider" /> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <intent-filter> <action android:name="com.bobo.widgetupdate" /> </intent-filter> </receiver>
0 0
- appwidget实例 AppWidget开发实例 [复制链接]
- appWidget开发实例
- AppWidget开发实例
- AppWidget开发实例讲解(一)
- AppWidget开发实例讲解(二)
- AppWidget开发实例讲解(三)
- AppWidget开发实例讲解(一)
- AppWidget开发实例讲解(二)
- AppWidget实例
- AppWidget开发
- AppWidget开发
- Android AppWidget实例验证
- Android AppWidget实例验证
- Android AppWidget实例验证
- Android AppWidget实例验证
- Android AppWidget实例验证
- AppWidget运用实例
- android appwidget开发
- Android软件开发之获取通讯录联系人信息(二十九)
- <<Oracle数据库性能优化艺术(第五期)>> 第1周 性能优化综述
- 设计模式初探-模板方法模式
- webstorm无法连接chrome的解决办法
- 黑马程序员—17—java基础:有关API的使用学习笔记和心得体会
- appWidget开发实例
- <<Oracle数据库性能优化艺术(第五期)>> 第2周 锁
- Swing组件设置背景
- @class 和 #import 的区别
- Java Generics 特例
- 通过python下的socket实现组播数据的发送和接收
- 题目1124:Digital Roots
- poj 1328 贪心
- Maven项目管理实战(三)--创建Web App