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