Android Widget其实是mini版的apk程序,只是功能上进行了封装同时也受到了更多的约束。
以下是开发过程中碰到几点问题,记录一下:
一、关于EditText以及一些无法使用的组件问题
Widget是不允许放置EditView组件的,要实现EditText的效果,只能是在点击后跳转到另外的Activity,有几种方式:
1. 直接采用Image方式,可以使用ImageView、ImageButton等
2. 设置TextView的style属性,如:style="@android:style/Widget.EditText"
具体哪些View可以使用,可以参考官方文档(
http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout)
二、独立Widget 多个按钮问题
开发中碰到一个诡异的问题,场景是这样的:
创建了一个独立的widget程序,没有main Activity,widget上面有多个按钮(每个按钮唤起一个Activity),点击第一个按钮后唤起activity1再按HOME键,然后按第二个按钮唤起activity2再按HOME键,当再次点击第一个按钮时唤起的却是activity2,当再按第三个按钮时又正常唤起activity3。
多次尝试,最后的结果是:只要是首次打开的activity被HOME键onPause后就永远无法再次打开。
暂时想到的办法是在onPause方法中先调用 super.onPause(); 再调用一下 super.finish(); 把当前actiity销毁掉。
其实原因据猜测应该是,独立widget没有main Activity导致的,系统把第一个打开的activity1当成了主程序进程,所以当再次点击按钮一以后,只是简单的唤醒了上一个activity。
这个应该时android系统设计上的问题,具体原理就得了解android系统了。
三、关于透明图片事件点击区域问题
可以采用ImageButton组件,设置一下两个属性
android:src="@drawable/image1" //图片源
android:background="#00000000" // 透明背景
android:layout_width="100dp"
android:layout_height="50dp"
这样图片也不会被拉升,点击图片以外区域以及图片的透明区域也会有事件反应,只要设置一下ImageButton的长宽就可以了
四、关于的widget界面的刷新(update)
Widget是通过RemoteView 来通讯更新界面UI的,也就是说在初始化以后(OnEnbled和首次onUpdate),只要原元素(组件)没有主动变更,就会一直存在,RemoteView只是一个通讯工具,
每次在onUpdate方法中 RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
这个新建的RemoteView不是一个初始化界面UI的过程,而只是把它绑定到了对应的widget上面。
另外,记录一下:
1. 输入法事件:android:imeOptions="actionSearch" 并实现方法editText.setOnEditorActionListener
2. 传递Intent:
final PendingIntent intent1 = PendingIntent.getActivity(context, 0, new Intent(XXX), appWidgetId), 0);
rv.setOnClickPendingIntent(R.id.first_btn, intent1);
如果有多个PendingIntent,每次 new Intent(XXX), 最好设置不同的action,或者不同的Data。
3. widget主线程无法进行联网操作,可以新建一个Thread,或者在Handle中处理。
分享到:
相关推荐
这个“android 源码 android Widget开发案例 eclipse项目 直接导入”是一个很好的学习资源,帮助开发者深入理解如何构建和定制Widget。通过Eclipse IDE可以直接导入该项目,快速开始学习。 首先,我们需要了解...
在Android应用开发中,Widget是桌面小部件,它允许用户在主屏幕上与应用程序进行交互,无需实际打开应用程序。本教程将深入探讨如何使用Android Widget,通过提供的源码实例,涵盖了一系列基本到高级的组件,包括...
在Android应用开发中,Widget组件是用户界面的一个重要组成部分,它允许开发者将应用程序的功能和信息直接展示在用户的桌面或通知栏上,无需打开应用程序。Widget提供了便捷的方式,让用户可以快速交互,增强了用户...
以上就是一个简单的Android音乐播放器App Widget的开发流程。在实际应用中,你可能需要考虑更多细节,如优化更新频率以节省电量,处理多个实例的同步问题,以及提供更丰富的交互功能。通过深入学习和实践,你可以...
Android Widget开发学习教程主要涵盖了如何创建和配置一个基本的Widget,包括以下几个关键步骤: 1. **创建AppWidgetProvider子类**: 一个Android Widget的核心是`AppWidgetProvider`类,它是BroadcastReceiver的...
本资料包"androidWidget小组件开发.zip"包含了一个名为"MyWidget"的示例项目,可能包含了关于如何创建和实现Android Widget小组件的代码和资源。 1. **Widget组件概述** - Android Widget是Android系统中的一个...
在Android应用开发中,Widget小组件是用户界面的重要组成部分,它们允许用户在主屏幕上与应用程序进行交互,而无需打开实际的应用。本资料包"Android应用源码之android Widget小组件开发.zip"提供了一套完整的源代码...
# Android Widget开发代码示例详细说明 ## 一、概览 在Android系统中,Widget是一种可以在用户桌面上提供快捷操作或显示应用相关信息的小部件。它们可以被看作是应用程序的一部分,但通常独立于主应用运行。Widget...
本压缩包"Android高级应用源码-android Widget小组件开发"提供了关于如何创建和优化Android Widget的详细示例。以下是对这个主题的深入探讨: 一、Android Widget概述 Widget是Android系统中的一种轻量级组件,它们...
在Android应用开发中,Widget小组件是用户界面的重要组成部分,它们允许用户在主屏幕上与应用程序进行交互,而无需实际打开应用。本项目是针对Android Widget小组件开发的一个毕业设计示例,适合学习和理解Android...
在Android操作系统中,Widget是应用程序在主屏幕或通知中心提供的一种小型用户界面组件。它们可以为用户提供快捷方式...实践过程中,开发者还需要熟悉Android Studio的开发环境和相关工具,以便更高效地进行开发工作。
虽然由于权限限制未能实现完整的功能,但它为我们提供了学习和实践Android Widget开发的一个良好起点。通过深入理解并扩展这个例子,开发者可以创建更多丰富多样的桌面Widget,提升应用的用户体验。
Android应用源码之android Widget小组件开发.zip项目安卓应用源码下载Android应用源码之android Widget小组件开发.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目...
在Android开发中,Widget是应用在主屏幕上的小型视图,它们可以提供用户与应用程序的快速交互。本主题主要探讨如何实现一个Android Widget,当用户点击Widget时,它能够打开一个新的界面,展示一个ListView,该...
在Android开发中,Widget是应用在主屏幕上的小型UI组件,它们可以提供用户与应用程序的交互,无需打开应用本身。ListView是一种常用的布局管理器,它允许用户在一个滚动列表中显示大量数据。本教程将深入探讨如何在...
本教程将深入探讨如何开发Android Widget,以实现一个从叽歪网站获取内容并展示的示例。 首先,要创建一个Android Widget,我们需要遵循以下步骤: 1. **创建AppWidgetProvider子类**: 我们需要创建一个继承自`...
在Android开发中,UI(用户界面)是与用户交互的核心部分,Widget是构成这一界面的重要元素。本主题“Android_UI_Widget”将深入探讨Android中Widget的相关知识,包括它们的种类、功能、使用方法以及如何进行自定义...
在Android开发中,Widget是应用于桌面的小部件,它允许用户在主屏幕上直接与应用程序进行交互,而无需打开应用程序本身。本教程将深入讲解如何创建一个Android Widget,以世界杯倒计时为例,帮助开发者提升技能。 ...