界面更新android widget点击事件界面更新

这段时间个人几篇文章介绍了改界面更新的文章. 关联文章的地址

    在appWidget中,ImageButton和Button都是被支撑的控件,其事件可成分三种型类:
一、开启Activity
二、开始Service
三、发送按钮Action

    上面开始一个一个分析,如何实现。

    一、开启Activity

    1、首先先定义个开启Activity的intent

    eg: 

    

Intent fullIntent=new Intent(this,FullScreen.class);
若要传递数据,则用使intent.putExtra()法方
eg:   fullIntent.putExtra("isCircle",isCircle);

2、用intent实例化一个PendingIntent,调用pendingIntent的getActicity法方来启动另一个Activity
①若该Intent带有数据,则须要将最后一个数参的值设为:FLAG_CANCEL_CURRENT
eg:   PendingIntent Pfullintent=PendingIntent.getActivity(this, 0, fullIntent,PendingIntent.FLAG_CANCEL_CURRENT);
②若该Intent不带数据,则最后一个数参设为0
eg:   PendingIntent Pfullintent=PendingIntent.getActivity(this, 0, fullIntent, 0);

3、实例化RemoteView,其对应应相的Widget布局
eg:   RemoteViews views= newRemoteViews(getPackageName(), R.layout.widget);

4、给RemoteView上的Button或ImageButton置设按钮事件
eg:  views.setOnClickPendingIntent(R.id.IBfullscreen,Pfullintent);

5、更新AppWidget界面
①如果是在onUpdate()法方内更新AppWidget界面
eg:  appWidgetManager.updateAppWidget(appWidgetIds, ActivityView);
②如果是在onUpdate()法方外(一般为Service内)更新AppWidget界面,则须要定义几个变量
eg:   public RemoteViews views;//RemoteView象对
        publicComponentName thisWidget; //组件名
        public AppWidgetManager manager; // AppWidget管理器

        thisWidget = new ComponentName(this,PictureAppWidgetProvider .class);
        manager = AppWidgetManager.getInstance(this);
        manager.updateAppWidget(thisWidget, views);

二、开启Service
1、定义一个intent来开启Service
eg:   Intent startServiceInten=newIntent("zyf.temp.Service.START");
注:数参为开启Service的作动

2、用Intent实例化一个PendingIntent,用利PendingIntent的getService法方来启动一个服务
eg:   PendingIntent Pintent=PendingIntent.getService(context, 0, startServiceInten, 0);

3、实例化RemoteView,其对应应相的Widget布局
eg:   RemoteViews views= newRemoteViews(getPackageName(), R.layout.widget);

4、给RemoteView上的Button或ImageButton置设按钮事件
eg:  views.setOnClickPendingIntent(R.id.IBfullscreen,Pfullintent);

5、更新AppWidget界面
①如果是在onUpdate()法方内更新AppWidget界面
eg:  appWidgetManager.updateAppWidget(appWidgetIds, ActivityView);
②如果是在onUpdate()法方外(一般为Service内)更新AppWidget界面,则须要定义几个变量
eg:   public RemoteViews views;//RemoteView象对
        publicComponentName thisWidget; //组件名
        public AppWidgetManager manager; // AppWidget管理器

        thisWidget = new ComponentName(this,PictureAppWidgetProvider .class);
        manager = AppWidgetManager.getInstance(this);
        manager.updateAppWidget(thisWidget, views);

三、发送按钮Action
1、定义一个Intent来发送按钮Action
eg:   Intent prevInten=new Intent("PREV");

2、用Intent实例化一个PendingIntent,用利PendingIntent的getBroadcast法方来发送播广
eg:   PendingIntent Pprevintent=PendingIntent.getBroadcast(this, 0, prevInten, 0);

3、实例化RemoteView,其对应应相的Widget布局
eg:   RemoteViews views= newRemoteViews(getPackageName(), R.layout.widget);

4、给RemoteView上的Button或ImageButton置设按钮事件
eg:   views.setOnClickPendingIntent(R.id.IBprev,Pprevintent);

5、更新AppWidget界面
①如果是在onUpdate()法方内更新AppWidget界面
eg:  appWidgetManager.updateAppWidget(appWidgetIds, ActivityView);
②如果是在onUpdate()法方外(一般为Service内)更新AppWidget界面,则须要定义几个变量
eg:   public RemoteViews views;//RemoteView象对
        publicComponentName thisWidget; //组件名
        public AppWidgetManager manager; // AppWidget管理器

        thisWidget = new ComponentName(this,PictureAppWidgetProvider .class);
        manager = AppWidgetManager.getInstance(this);
        manager.updateAppWidget(thisWidget, views);

6、接收该Action
①在AppWidget自己的onReceive法方内接收
⒈在Action,要在Manifest.xml中参加Action
eg:  <intent-filter>
          <actionandroid:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
          <actionandroid:name="PREV"></action>
      </intent-filter>
⒉在onReceive()法方内编写要实现的作动
eg:   if(intent.getAction().equals("PREV"))
{
     //在这编写接收到该Action后要实现的作动
}
②在Service内接收
⒈注册一个BroadcastReceive,明声接收器
eg:   IntentFilter filter=new IntentFilter();
        filter.addAction("PREV");
        registerReceiver(doCommand, filter);
⒉,在BroadcastReceive类的onReceive法方内编写要实现的作动
eg:   if(intent.getAction().equals("PREV"))
{
     //在这编写接收到该Action后要实现的作动
}

文章结束给大家分享下程序员的一些笑话语录: 神灯新篇
一个程序员在海滩上发现了一盏神灯。他在灯上擦了几下,一个妖怪就从灯里跳出来说:“我是世界上法术最强的妖怪。我可以实现你的任何梦想,但现在,我只能满足你一个愿望。”程序员摊开了一幅中东地图说:“我想让中东得到永久的和平。”妖怪答道:“哦,我没办法。自打创世纪以来,那里的战火就没有停息过。这世上几乎没有我办不到的事,但这件事除外。”程序员于是说:“好吧,我是一个程序员,为许多用户编写过程序。你能让他们把需求表述得更清楚些,并且让我们的软件项目有那么一两次按进度按成本完成吗?”妖怪说:“唔,我们还是来看中东地图吧。”

你可能感兴趣的:(android)