Android之App Widgets开发初步

AppWidget就是我们平常在桌面上见到的那种一个个的小窗口,利用这个小窗口可以给用户提供一些方便快捷的操作。下面让我们在桌面 上实现一个简单的AppWidget。

首先定义AppWidgetProviderInfo:在res/xml文件夹中定义一个名为 :myappwidgetprovider.xml。

  1. <appwidget-providerxmlns:android="http://schemas.android.com/apk/res/android"
  2. android:minWidth="72dp"
  3. android:minHeight="72dp"
  4. android:updatePeriodMillis="86400000"
  5. android:initialLayout="@layout/myappwidget">
  6. </appwidget-provider>
然后为App Widget指定样式和布局:myappwidget.xml 和我们平时的布局文件一样,可以设置自己喜欢的类型。
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:background="#ffffff"
  6. android:gravity="center"
  7. android:orientation="vertical">
  8. <ImageView
  9. android:id="@+id/imageView1"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:src="@drawable/ic_launcher"/>
  13. <Button
  14. android:id="@+id/button"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:text="Button"/>
  18. </LinearLayout>
接下来实现继承AppWidgetProvider的类:ExampleAppWidgetProvider
  1. publicclassExampleAppWidgetProviderextendsAppWidgetProvider{
  2. @Override
  3. publicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,
  4. int[]appWidgetIds){
  5. //TODOAuto-generatedmethodstub
  6. finalintN=appWidgetIds.length;
  7. for(inti=0;i<N;i++){
  8. intappWidgetId=appWidgetIds[i];
  9. Intentintent=newIntent(context,SimpleDemoActivity.class);
  10. PendingIntentpendingIntent=PendingIntent.getActivity(context,0,intent,0);
  11. RemoteViewsviews=newRemoteViews(context.getPackageName(),R.layout.myappwidget);
  12. views.setOnClickPendingIntent(R.id.button,pendingIntent);
  13. //TelltheAppWidgetManagertoperformanupdateonthecurrentappwidget
  14. appWidgetManager.updateAppWidget(appWidgetId,views);
  15. }
  16. }
  17. @Override
  18. publicvoidonReceive(Contextcontext,Intentintent){
  19. //TODOAuto-generatedmethodstub
  20. super.onReceive(context,intent);
  21. }
  22. }
其实AppWidgetProvider就是继承了BroadcastReceiver,可以看成是一个特殊的BroadcastReceiver。它里面有两个重要的方法onReceive()onUpdate()

最后在manifest中加入:

  1. <application
  2. android:icon="@drawable/ic_launcher"
  3. android:label="@string/app_name">
  4. <activity
  5. android:label="@string/app_name"
  6. android:name=".SimpleDemoActivity">
  7. <intent-filter>
  8. <actionandroid:name="android.intent.action.MAIN"/>
  9. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  10. </intent-filter>
  11. </activity>
  12. <receiverandroid:name="ExampleAppWidgetProvider">
  13. <intent-filter>
  14. <actionandroid:name="android.appwidget.action.APPWIDGET_UPDATE"/>
  15. </intent-filter>
  16. <meta-data
  17. android:name="android.appwidget.provider"
  18. android:resource="@xml/myappwidgetprovider"/>
  19. </receiver>
  20. </application>

这样就完成了一个简单了Widgets,运行这个工程。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值