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

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



分享到:
评论

相关推荐

    QT界面旋转切换Widget

    在类中,你可以设置一个信号槽机制,当触发特定事件(如点击按钮)时,启动旋转动画。QT的QPropertyAnimation类可以用来创建这种动画,它允许你对Qt对象的属性进行动画处理。例如,你可以设置一个动画来改变Widget的...

    canvas.c - A drawing canvas widget

    4. **事件处理**:`canvas`控件可以响应用户的点击、拖动等操作,使得它可以用于创建具有用户输入反馈的应用。 5. **标签绑定**:`canvas`上的图形对象可以与数据结构关联,这种绑定使得数据可视化变得简单。例如,...

    Android应用源码Widget炫酷特效 (宏基扇子型效果-IT计算机-毕业设计.zip

    - 学习如何处理用户交互,如点击事件,以触发扇子的开合动作。 4. **毕业设计与论文** - 对于毕业设计来说,这个项目可以作为展示Android高级特性和自定义UI能力的实例。 - 论文中应详细阐述设计思路,包括技术...

    Android桌面插件-时钟widget

    4. **Intent和IntentFilter**: 为了响应用户操作,如点击Widget,开发者需要设置Intent和IntentFilter。当用户与Widget交互时,系统会根据IntentFilter启动相应的Activity或Service。 5. **AppWidgetManager**: 这...

    Qt Essentials-Widget Edition

    5. **事件处理**: Qt的事件系统允许开发者捕获并响应各种用户输入和系统事件,如鼠标点击、键盘输入等。 6. **资源系统**: Qt的资源系统允许在应用程序中内嵌资源,如图片、音频或字体,方便管理和打包。 7. **...

    Android-Android桌面小部件widget日签Or日历可作为桌面日历

    5. **处理用户交互**:当用户点击Widget时,可以通过PendingIntent启动相应的Activity或Service来响应用户的操作。 在这个特定的案例中,"日签"功能需要显示农历和阳历日期。Android提供了Calendar类来处理日期和...

    ViewPager自动轮播加点击事件

    在标题“ViewPager自动轮播加点击事件”中,我们关注的核心知识点是如何在ViewPager的基础上实现自动轮播功能,并且添加点击事件监听。 首先,我们来详细讲解ViewPager的基本使用: 1. **依赖引入**:在项目的...

    AppWidget案例

    例如,当用户点击Widget时,可以通过更新RemoteViews对象来改变Widget的视图结构,实现形态转换。 **Widget的状态管理** 是指跟踪和控制Widget在不同交互下的表现。状态可能包括是否激活、是否显示特定数据等。通常...

    类似 墨迹天气widget翻页时钟

    开发者需要了解如何创建和更新Widget,以及如何处理用户的点击事件。 2. **自定义View**:为了实现独特的翻页效果,开发者可能会创建自定义的View类,重写onDraw()方法,以及利用Canvas和Matrix进行复杂的图形绘制...

    使用QWidget实现翻转

    首先,`QWidget`是Qt GUI编程的基础组件,它提供了窗口、绘图和事件处理等功能。在这里,我们用它来作为翻转动画的主体,可以通过重写`paintEvent()`函数来绘制自定义的图形和动画状态。 `QPainter`是Qt中的一个...

    android天气控件

    - 考虑添加点击事件,当用户点击Widget时,可以启动天气应用的详情页面或执行其他操作。 - 使用`PendingIntent`绑定到`RemoteViews`的点击事件,实现这一功能。 6. **测试与发布** - 在模拟器或实际设备上安装并...

    点击波纹效果---eclipse

    在Android开发中,点击事件通常会产生一定的视觉反馈,让用户知道他们的操作已经被系统接收。"点击波纹效果"就是一种常见的交互反馈方式,它模仿了水波纹扩散的效果,为用户提供了一种直观且美观的触控体验。这个...

    qtListwidget控件使用实例

    可以连接`itemClicked(QListWidgetItem *)`信号到一个槽函数来处理点击事件。 6. **从UI文件加载** - `mainwindow.ui`文件是一个XML格式的UI描述,可以用`uic`编译器转换为C++头文件(如mainwindow.h)和源文件...

    Widget特炫效果

    3. **RemoteViews**: 用于表示Widget在主屏幕上显示的内容,它可以操作远程视图并更新到用户界面上,支持布局和视图的嵌套,以及一些基本的交互如点击事件。 4. **CanvasDemo**: 这个文件名可能代表一个示例,展示...

    stacked widget 控件提升

    此外,还可以通过信号和槽机制,根据用户操作或其他事件动态切换页面。例如,当用户点击一个按钮时,可以连接一个槽函数来切换页面: ```cpp connect(button, &QPushButton::clicked, stackedWidget, ...

    【计算机专业-Andorid项目源码100套之】Widget炫酷特效 (宏基扇子型效果)

    1. **AppWidgetProvider**: 这是所有Widget的基础类,它作为事件处理器,监听用户与Widget的交互,例如点击事件。你需要在`AndroidManifest.xml`中声明`AppWidgetProvider`并指定其对应的类。 2. **布局文件**...

    同一个TextView不同文字的点击事件 demo

    本教程将详细讲解如何实现“同一个TextView不同文字的点击事件”,以便于在单个`TextView`内实现多种交互功能。 首先,我们需要理解`SpannableString`和`ClickableSpan`这两个关键概念。`SpannableString`是`String...

    安卓app开发项目-Widget炫酷特效 (宏基扇子型效果)(源码).zip

    此外,可能还需要实现点击事件监听,当用户点击Widget时,可以触发扇子的开关动作或者启动关联的应用程序。这可以通过在BroadcastReceiver中注册意图(Intent)并设置ACTION_BUTTON_CLICK行动来完成。为了提高用户...

    is-widget-Tree:Infinity Systems 小部件树

    "Is-widget-Tree"可能包含各种配置选项和API,以便用户调整节点样式、添加自定义图标、定义点击事件等。 6. **性能优化**:对于大型树结构,一次性渲染所有节点可能导致性能问题。因此,"Is-widget-Tree"可能实现了...

    Widget炫酷特效 (宏基扇子型效果).zip

    开发者可以通过编写Java代码来实现Widget的逻辑功能,比如点击事件处理、定时更新等。 在描述的"宏基扇子型效果"中,我们可以想象这个Widget在用户交互时呈现出如同扇子打开和关闭的动态视觉效果。这种特效可能是...

Global site tag (gtag.js) - Google Analytics