Android Widgets中Click事件是本文要介绍的内容,主要来了解并学习Android Widgets应用。不得不说,Android下的Widgets事实上很弱,而提供的交互能力更是相当的少,在其关键类 RemoteViews内,也仅能找到一个OnClick的事件,除此之外完全没有其他任何事件。
借由这个事件,让我们能够完成一些简单的交互,其基本原理只有一条,即对界面组件作出Click动作,然后处理该Click事件
核心步骤如下所示:
1、申请一个Intent,用于标识Click时要做的动作
2、申请一个PendingIntent,用于将Intent挂起,并等待事件触发
3、绑定Click事件到具体组件
4、更新Widget
于是代码就很简单了:
- public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
- Intent actClick=new Intent("rarnu.demo.click");
- PendingIntent pending= PendingIntent.getBroadcast(context, 0, actClick, 0);
- RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.main);
- rv.setOnClickPendingIntent(R.id.btnClick, pending);
- appWidgetManager.updateAppWidget(appWidgetIds, rv);
- }
此处的Intent actClick=new Intent("rarnu.demo.click");一句,可以按不同的需求修改成不同的形式
下面按不同的场景来讲述
一、发送消息
要发送消息,必须在Widget的配置文件内增加消息的接收动作 / Action,如下所示:
- <action android:name="rarnu.demo.click"></action>
有了这句配置后,Widget就拥有了接受指定消息的能力,再配合代码处理之
- public void onReceive(Context context, Intent intent){
- super.onReceive(context, intent);
- if(intent.getAction().equals("rarnu.demo.click")) {
- Toast.makeText(context, "OK!!!!!", Toast.LENGTH_LONG).show();
- }
- }
二、启动应用程序
Intent声明需要改为Intent actClick=new Intent(context, <startApp>.class);
三、启用服务
Intent的声明需要改为Intent actClick = new Intent("<ServiceName>.START");
看完这篇文章后,可能有些人会问,为什么没有从Widget界面上获取数据的代码演示?
我在此说一下,是的,就是没有从Widget界面上获取数据,因为Android不支持。
小结:详解Android Widgets中Click事件的内容介绍完了,希望通过Android Widgets内容的学习能对你有所帮助!