- 浏览: 430355 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
IThead:
纠结了几天,用了你的方法,现在解决了,谢谢!
Eclipse 写Javascript卡死问题 -
Rubicon__:
你好,我在运用PageWidget这个类时,出现第一页翻到第二 ...
android翻书效果实现原理( 贝塞尔曲线绘制原理/点坐标计算) -
lionios:
如果不显示printDialog,则打印出来的是空白页,请问你 ...
Print打印机例子 -
rayln:
weiqiulai 写道哥们儿,我怎么没有看到监控队列的配置和 ...
JMS监听MQ实例 -
weiqiulai:
哥们儿,我怎么没有看到监控队列的配置和代码?
JMS监听MQ实例
PendingIntent是指把Intent包装了一层, 并且把PendingIntent放入一个新的进程. 通过触发事件去触发这个PendingIntent.
创建PendingIntent方法.
1. getActivity(Context context, int requestCode, Intent intent, int flags)
2. getBroadcast(Context context, int requestCode, Intent intent, int flags)
3. getService(Context context, int requestCode, Intent intent, int flags)
例子:
在/res/xml中新建一个example_appwidget.xml
在/res/layout中新建一个example_widget.xml
main.xml的内容不变
ExampleAppWidgetProvider.java内容
AndroidManifest.xml
TargetActivity.java内容
创建PendingIntent方法.
1. getActivity(Context context, int requestCode, Intent intent, int flags)
2. getBroadcast(Context context, int requestCode, Intent intent, int flags)
3. getService(Context context, int requestCode, Intent intent, int flags)
例子:
在/res/xml中新建一个example_appwidget.xml
<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:initialLayout="@layout/example_appwidget_info"> </appwidget-provider>
在/res/layout中新建一个example_widget.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="firstWidgetText" android:background="#000000" android:id="@+id/widgetTextId" android:layout_width="fill_parent" android:layout_height="wrap_content"></TextView> <Button android:layout_width="match_parent" android:id="@+id/button1" android:text="Button" android:layout_height="wrap_content"></Button> </LinearLayout>
main.xml的内容不变
ExampleAppWidgetProvider.java内容
package com.cn; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; import android.widget.RemoteViews; public class ExampleAppWidgetProvider extends AppWidgetProvider { @Override public void onDeleted(Context context, int[] appWidgetIds) { System.out.println("onDeleted"); super.onDeleted(context, appWidgetIds); } @Override public void onDisabled(Context context) { System.out.println("onDisabled"); super.onDisabled(context); } @Override public void onEnabled(Context context) { System.out.println("onEnabled"); super.onEnabled(context); } @Override public void onReceive(Context context, Intent intent) { System.out.println("onReceive"); super.onReceive(context, intent); } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { System.out.println("onUpdate"); for (int i = 0; i < appWidgetIds.length; i++) { System.out.println(appWidgetIds[i]); //创建一个intent对象 Intent intent = new Intent(context,TargetActivity.class); //创建一个PendingIntent PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0); RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.example_widget); //第一个参数用来指定绑定事件的id //第二个参数指定事件发生时, 哪个pendingIntent会被执行 remoteViews.setOnClickPendingIntent(R.id.button1, pending); //第一个参数是更新哪个appwidget的id //第二个是传remoteView appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews); } super.onUpdate(context, appWidgetManager, appWidgetIds); } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cn" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Appwidget2Activity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="ExampleAppWidgetProvider"> <!-- 指定广播接收 --> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action> </intent-filter> <!-- appwidget的源文件 --> <meta-data android:name="android.appwidget.provider" android:resource="@xml/example_appwidget_info"></meta-data> </receiver> <activity android:name="TargetActivity"></activity> </application> </manifest>
TargetActivity.java内容
package com.cn; import android.app.Activity; import android.os.Bundle; public class TargetActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
发表评论
-
背景图平铺
2013-12-05 10:12 879以LinearLayout为例,它提供的background属 ... -
应用加载完成调用的方法
2013-12-04 17:09 758@Override public void ... -
MAC系统下COCOS2D-X(IPHONE-ANDROID)及IDE的开发环境搭建
2013-11-11 16:30 1230最近正在做移动多平台对应游戏框架的调查,因为之前业余时间一直使 ... -
Android多分辨率自适应
2013-10-17 14:41 1480转载: http://blog.csdn.net/soesa/ ... -
Android的系统通知栏小例子
2013-07-19 15:35 714package com.example.notificatio ... -
Android开机广播和关机广播
2013-04-07 11:23 1220http://blog.csdn.net/coolszy/ar ... -
Android发送短信
2013-03-07 17:29 723public void sendMsg(String numb ... -
Android查询所有联系人和根据号码查询联系人方法
2013-03-07 11:11 1030直接看例子: package com.msg.util; ... -
Android短信接收
2013-03-06 14:30 704package com.msg.vo; import a ... -
通过ActionBar设置Tabs
2013-02-28 17:32 1274在网上竟然很少这个完整的例子, 我这里做一个例子让大家分享一下 ... -
Android的ActionBar菜单使用
2013-02-28 16:25 1794使用ActionBar设置菜单例子 /res/menu/ac ... -
TabHost的基本使用方法
2013-02-28 11:17 1001非常简单的例子说明一个TabHost的使用 <Rela ... -
android翻书效果实现原理( 贝塞尔曲线绘制原理/点坐标计算)
2012-04-28 16:43 2426转载: http://www.open-open. ... -
贝塞尔曲线画法
2012-04-28 13:21 2371转载:http://blog.csdn.net/xiaomin ... -
CALL拨打电话
2011-11-22 11:11 873public void onCreate(Bundle sav ... -
SMS短信发送
2011-11-22 11:06 982直接看例子: main.xml <?xml versi ... -
开机启动Service
2011-11-21 15:17 703AndroidManifest.xml <?xml ve ... -
监听电话状态
2011-11-21 11:14 753请看程序 PhoneActivity.java package ... -
App播放Music
2011-11-21 10:45 557/** * 播放录音文件 * @p ... -
MediaRecorder录制音频
2011-11-21 10:43 1310一个录音的小程序!! Main.xml <?xml v ...
相关推荐
最后,为了使Widget能在设置界面显示,需要在主Activity中调用AppWidgetManager的updateAppWidget()方法,传递Widget的ID和RemoteViews对象: ```java public class MainActivity extends AppCompatActivity { @...
本教程将详细介绍如何在Android项目中创建和使用一个简单的Widget。 1. **理解Android Widget** Android小部件是基于AppWidgetProvider类的,它是一个BroadcastReceiver的子类,负责处理小部件的更新、点击等事件...
3. **设置RemoteViews**:在`onUpdate()`方法中,使用`RemoteViews`对象实例化我们的布局,并通过`setRemoteAdapter()`方法将Adapter绑定到ListView。`setRemoteAdapter()`方法告诉系统远程服务如何获取列表数据。 ...
接下来,在`onUpdate()`方法中,你需要创建一个RemoteViews对象,它代表了Widget在主屏幕上的布局。通过RemoteViews,你可以设置Widget的各项属性,如文本、图像等。然后使用`appWidgetManager.updateAppWidget()`来...
在`onReceive`方法中,我们获取`appWidgetId`并更新对应的小部件。这通常涉及到使用`RemoteViews`对象来修改小部件的布局或数据。 在Android权限方面,由于BroadcastReceiver是在后台运行的,所以需要在...
在`onReceive()`方法中,我们可以检测到`appWidget`的意图(Intent)并根据需要启动`Activity`。 ```java public class AppWidgetReceiver extends BroadcastReceiver { @Override public void onReceive(Context...
使用XML布局文件来定义Widget的外观,通常使用`RemoteViews`类来设置布局和动态更新内容。布局可以包含各种视图元素,如TextView、ImageView和Button等。 3. **Widget配置信息** 在`appwidget-provider.xml`文件...
在`02_07_ppt.jpg`中,可能包含的是关于Widget设计和使用技巧的PPT,涵盖了如何优化用户体验、提高Widget的互动性和吸引力等内容。可能包括了设计原则、最佳实践以及一些高级特性,如Widget预览、Widget配置活动等。...
5. 更新Widget:使用AppWidgetManager和RemoteViews来更新Widget的内容。 6. 添加到主屏幕:用户可以通过长按主屏幕,选择添加Widget来将你的应用Widget添加到设备上。 四、Widget的优化技巧 1. 使用...
用户可以通过点击Widget来触发事件,这通常通过在`AppWidgetProvider`的`onReceive()`方法中处理ACTION_WIDGET_CLICK意图来实现。 7. **最佳实践** - 优化更新频率以减少电池消耗。 - 提供清晰的用户指南,解释...
4. **更新Widget内容**: 使用`RemoteViews`类来修改Widget的视图,通常在`onUpdate()`方法中执行。 ```java RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout); views....
2. **设置更新间隔**: 在AndroidManifest.xml中,你可以使用`<appwidget-provider>`标签的`updatePeriodMillis`属性来设置Widget自动更新的频率。但请注意,由于Android系统的电源管理策略,实际更新间隔可能不会...
6. **实现更新逻辑**:在`onUpdate()`方法中,使用`RemoteViews`对象来操作Widget的视图,并通过`AppWidgetManager`更新Widget的内容。`RemoteViews`可以用来设置布局中的文本,例如设置TextClock的文本为当前时间。...
如果你的Widget显示的是新闻标题,可以定期通过后台服务发送一个更新广播,BroadcastReceiver接收到广播后,使用RemoteViews对象来修改Widget上的文本视图,然后调用AppWidgetManager的updateAppWidget()方法来刷新...
最后,你需要在`onUpdate()`方法中使用RemoteViews来填充并更新布局,同时创建一个PendingIntent来响应用户的交互: ```java @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager,...
我们通常在XML文件中定义这个信息,然后在AppWidgetProvider的onReceive方法中加载。 3. **RemoteViews**: 这是表示Widget视图的类,允许开发者操作远程进程中的View对象,这对于更新Widget内容非常有用。我们可以...
这通常涉及到对自定义View的使用,以及在onDraw()方法中实现绘图逻辑。 在描述中提到了一个博客链接,虽然具体内容没有给出,但我们可以根据常规的Android开发实践来解释这个主题。在Android中,Widget并不直接支持...
它首先获取当前的`AppWidgetManager`实例,然后使用`updateAppWidget()`方法更新Widget。 ### 3.3 关键变量解释 - `SUBJECT_MARK`: 表示学科标识符的字符串常量。 - `CHINESE_CONSTANT`: 用于表示中文科目的常量值...
在这个时钟Widget中,开发者会用RemoteViews来创建和更新显示时间的大字体时钟和日期信息。 4. **AlarmManager**: 可能用于定时更新Widget内容。因为Android系统为了节能,不会一直监控Widget的更新,所以开发者...
- Android系统会定期检查Widget状态,但为了确保时间的实时性,你可能需要在服务或BroadcastReceiver中手动调用`AppWidgetManager.updateAppWidget()`方法来强制更新Widget。 9. **测试与优化**: - 使用Android...