`
alp1014
  • 浏览: 25410 次
  • 来自: 北京
社区版块
存档分类
最新评论

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后要实现的动作
}



分享到:
评论

相关推荐

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--监听之ListView条目点击事件监听 |--监听之ListView滑动监听 |--监听之单击监听的两种定义 |--监听之双击监听 |--监听之电话状态监听 |--监听之触摸监听 |--短信之根据id删除及查询短信 |--短信发送小demo |--...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    6.我们点击后面的...号,进入资源选择器,但现在这里面是空的。所以下面我 们需要给该工程添加外部资源。 7.添加资源有两种方法。一种是直接添加系统提供的资源文件,然后选择所需图 标。另一种是自己写资源文件。...

    swipeback-Android侧滑返回分析和实现(不高仿微信).zip

    }STEP.3在Activity的dispatchTouchEvent和onTouchEvent中分发触摸事件,如果仅希望侧边触发,可以不用onTouchEvent@Overridepublic boolean dispatchTouchEvent(MotionEvent event) { if (mSwipeBackHelper !...

    Url重写篇视频------本讲将通过实例比较ASP.NET下的三种典型URL重写方案

    我们来对页面上的链接反复点击点击,folder page -&gt; section page -&gt; folder page -&gt; section page...等等,打住,看到浏览器地址栏发生了什么吗?这不是恐怖活动,但是。。。也差不多了。我们看到我们可爱的地址,...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——...

    Android开发资料合集--续

    40、点击widget获取ID 68 41、ViewFlipper小动画 69 42、setTextColor的问题 70 43、获取程序信息并kill 70 44、mediaPlayer 与 soundPool 74 45、标题栏添加图标 76 46、 URI 76 案例分析:SD卡插拔事件的匹配 77 ...

    AnimatedPieView:一个好吃的甜甜圈?

    点击事件引起的甜甜圈 点击动画的甜甜圈 可以点击的甜甜圈 可以变成大饼的甜甜圈 动画长大的甜甜圈 主要功能 描述 方法 预览 动画成长 -- 饼图/甜甜圈转换 strokeMode(布尔值) 角度间隙 splitAngle(float) 投放...

    Android实验报告生命周期.doc

    } public class MyBtnClickListener implements OnClickListener { //重写点击事件处理方法 public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent = new Intent(AlifecycleActivity...

    Google Android SDK开发范例大全的目录

    4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——...

    Moon Reader Pro 4.5.7.apk

    ✔24个自定义操作(屏幕点击,滑动手势,硬件键),适用于15个自定义事件:搜索,书签,主题,导航,字体大小等。 ✔5种自动滚动模式:滚动盲模式; 按像素,按行或按页。实时速度控制。 ✔通过沿屏幕左边缘滑动手指...

    Google Android sdk 开发范例大全 部分章节代码

    4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——...

    Google Android SDK 开发范例大全01

    4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——...

    Google Android SDK 开发范例大全02

    4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——...

    Google+Android+SDK开发范例大全

    4.14 数字及模拟小时钟设计——AnalogClock与DigitalClock的原理 4.15 动态输入日期与时间——DatePicker与TimePicker应用 4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——...

    Google Android SDK开发范例大全(完整版)

    4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——...

Global site tag (gtag.js) - Google Analytics