淘宝:模拟提示窗口,将快捷方式加入桌面

需要widget的基本知识

 App Widgets 桌面小工具

制作效果图
淘宝:模拟提示窗口,将快捷方式加入桌面

  1. AndroidManifest.xml中添加

 

<receiver   android:name="hb30.com.mob.Hb30WidgetProvider"  >

             <intent-filter >

                 <!-- 可以配置其它的Action,但这个是必须的 -->

                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/></intent-filter> 

                 <meta-data  android:name="android.appwidget.provider"

                     android:resource="@xml/example_appwidget"/>

         </receiver>

 

 2. res目录下添加xml目录,并建立刚才所需文件

 

3.     建立所需的布局文件。

4. 类文件,继承AppWidgetProvider

创建PendingIntent的方法

a)       getActivity(Context context,int requestCode,Intent intent,int flags)

b)       getBroadcast(Context context,int requestCode,Intent intent,int flags)

c)       getService(Context context,int requestCode,Intent intent,int flags)

  

 

  RemoteViews的作用

a) 表示了一系列的View对象

b) 表示的对象运行在另外的进程当中

App widget中加入Button

注意:App Widget当中的view运行在HomeScreen进程当中,所以绑定方式

不同:复写方法

 

 

 

 

接收来自appWidget的广播

  1.  AndroidManifest.xml中为AppWidgetProvider注册新的intent-filter; (它本身配置就是receiver,只要加filter就行)

2.  使用getBroadcast()方法创建一个PendingIntent;

3.  AppWidget当中的控件注册处理器;

4.  onReceive方法中接收广播。

a)   定义发送广播

b)   配置menifest中接收该action receiver 这两个action一致就可以实现接收。

 

 

 

 

 

 更新appWidget当中的控件状态

  RemoteViews类中有系列方法来对布局参数进行设置

 

public void onReceive(Context context, Intent intent) {

       Log.d("mydebug","widget--- onReceive");

       String action=intent.getAction();

       if(UPDATE_ACTION.equals(action)){

           RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.widget);

           remoteViews.setTextViewText(R.id.widgetText, "test");

           AppWidgetManager appWidgetManager=AppWidgetManager.getInstance(context);

           ComponentName componentName=new ComponentName(context, Hb30WidgetProvider.class);

           appWidgetManager.updateAppWidget(componentName, remoteViews);

           Log.d("mydebug","I am receiving my news");

       }else{

           super.onReceive(context, intent);

       }

 

 

<!--

    android:configure

如果你想要用户每次添加app widget时候自定义参数如颜色,大小,更新周期或者更多..

这个时候用 android:configure="com.example.android.ExampleAppWidgetConfigure",它会

让用户自动跳转到该activity,它和一般的activity一样,但是它要能够接收一个包含action="ACTION_APPWIDGET_CONFIGURE"

的intent 

-->

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

    android:initialLayout="@layout/widget"

    android:minHeight="72dp"

    android:minWidth="294dp"

    android:updatePeriodMillis="86400000" >

</appwidget-provider>

  

你可能感兴趣的:(模拟)