- 浏览: 521530 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
lin_kk:
最近正在学,请问LZ有源码事例吗,如果有能发一下我邮箱吗,万分 ...
使用libgdx及其中的box2d 2.1的注意事项 -
ahong520:
编译都通不过
ffmpeg对音频解码的一般步骤 -
辽东小小:
yajun_soft 写道XXX@XXX:~$ adb she ...
adb push的Permission denied -
cdtdx:
好文, 相当不错啊. 收了.
什么是app2sd,app2ext,data2ext?app移动到SD卡哪里去了? /mnt/asec /mnt/secure -
dickycat:
学习了,最近正在学这一块,年纪大了,学起来有点吃亏!
使用libgdx及其中的box2d 2.1的注意事项
1.创建AppWidget布局,包含两个TextView用来显示内容:
2.在res下创建xml目录,再在xml目录里面创建AppWidget信息xml文件:
2.1新建xml文件时,type选择AppWidget Provider。
2.2填充属性:
宽高的计算公式为:占用屏幕格数*74-2
Update period millis:设置为0,手动刷新。根据实验,设置不为0时,至少在2.2上系统根本不按照设置的值刷新,还是自己控制刷新时机好了。
Initial layout:就添控件要使用的布局。
Configure暂时不用,留空。
3.创建AppWidgetDemo类:
重载AppWidgetProvider中的所有函数,每个函数里面增加输出语句,以查看调用顺序。
4.在AndroidManifest.xml文件中声明此Widget:
添加一个Receiver,其name为AppWidgetDemo类的类名。
为此Receiver添加Intent filter,接收系统发出android.appwidget.action.APPWIDGET_UPDATE的Intent。
此外还要为此receiver添加meta-data信息,以告知系统相关的AppWidgetProvider信息:
meta-data的name是约定好的android.appwidget.provider,resource则是第2步创建的AppWidget信息xml文件。
5.至此AppWidget已经可用了,安装到模拟器上看下运行流程。
5.1添加一个Widget到桌面上:
onEnabled被呼叫:按照说明,当桌面上出现第一个此Widget的实例时,此函数被呼叫。
onReceive被呼叫:onReceive,Action:android.appwidget.action.APPWIDGET_ENABLED
onUpdate被呼叫:onUpdate,Count:1,并且待更新的AppWidget数量为1
onReceive被呼叫:onReceive,Action:android.appwidget.action.APPWIDGET_UPDATE
5.2再添加一个Widget到桌面上:
onUpdate被呼叫:onUpdate,Count:1,并且待更新的AppWidget数量仍然为1,而不是2。
onReceive被呼叫:onReceive,Action:android.appwidget.action.APPWIDGET_UPDATE
5.3从桌面上移除一个Widget:
onDeleted:每个实例被移除时都会被呼叫
onReceive,Action:android.appwidget.action.APPWIDGET_DELETED
5.4再从桌面上移除一个Widget:
onDeleted:仍然执行
onReceive,Action:android.appwidget.action.APPWIDGET_DELETED
onDisabled:因为是最后一个活动的实例被移除了,所以被呼叫。
onReceive,Action:android.appwidget.action.APPWIDGET_DISABLED
6.刷新AppWidget
6.1在onUpdate()中刷新:
onUpdate在AppWidget放到桌面时会被调用,在Update period millis达到时可能会被调用。
先获取一个RemoteViews,也就是AppWidget的布局所对应的View;
使用指定的Id更新要更新的控件;
更新整个RemoteViews,此时就可以更新AppWidget内容了。
但是这样的代码还有一个问题,当向桌面依次添加多个控件时会出现下面这样的效果:
即更新时没有同时更新所有的AppWidget,这是因为onUpdate中传进来的数组中只包含了1个id,如果想同时更新多个,那么可以把更新语句更换为:
通过组件名可以把所有的名字符合的AppWidget都更新。
6.2在onReceive()中更新
6.2.1自定义Action通知刷新:
在AndroidManifest.xml中定义的receiver的intent-filter增加一个自定义的Action:
com.demo.appwidget.refresh
包含此Action的Intent可以在后台服务或者Activity中发出,然后会被此Receiver接收,进而触发onReceive。
本例中采用按钮按下时广播intent:
在接收端:
判断是否是感兴趣的Action,是的话就取值,然后更新。
6.2.2接收系统消息刷新:
比如intent-filter中再增加一个action:"android.provider.Telephony.SMS_RECEIVED",在AndroidMenifest.xml中任意位置添加<uses-permission android:name="android.permission.RECEIVE_SMS" />设置好权限,当系统有短消息收到时就能触发onReceive了。
但是有些Action比较特殊,比如android.intent.action.TIME_TICK,根据android.content.intent文档中的描述:You can not receive this through components declared in manifests, only by exlicitly registering for it with Context.registerReceiver().
这个Action在AndroidManifest.xml中声明了也没用,必须要自己开个服务注册receiver才能收到,然后再转发一次给自己。
6.3直接在外部Activity或者Service中刷新:
此段代码可直接刷新AppWidget的内容,不会触发其onUpdate()。
7.响应点击事件
因为onUpdate是每个AppWidget被放置到桌面上时都会被呼叫的函数,所以在此函数中完成事件的关联:
另外要注意此段代码必须要在appWidgetManager.updateAppWidget()之前,否则是不会生效的。
运行后可以点击AppWidget的第一个控件,就能呼叫指定的Activity了。
8.Config Activity
这个可直接参考SDK文档中的Dev Guide-->App Widgets了。
- AppWidgetDemo.rar (49.6 KB)
- 下载次数: 113
发表评论
-
编译XT720 gingerbread
2013-05-04 11:18 879在android根目录下执行". build/env ... -
编译mx 内核成功
2013-03-18 17:48 897转 : http://hi.baidu.com/_xi ... -
ubuntu下面找不到ZTE V880设备
2012-12-06 16:22 859两种方法:第一种方法是你连上你的手机,重启电脑,再adb de ... -
Android中解决图像解码导致的OOM问题
2012-10-01 18:41 833http://7dot9.com/2011/08/androi ... -
编译Android下纯C的静态程序,undefined reference to raise
2012-07-08 23:28 2399尝试在Android下编译纯C的静态程序,执行gcc -v - ... -
开发Android下纯C程序时,打开时提示not found
2012-07-08 20:09 1402这个问题烦了我一天了..郁闷.本人想试验一下使用ndk里面的t ... -
NDK报错:make: *** 没有规则可以创建“obj/local/armeabi/objs/a/a.o”需要的目标“/a.c”。 停止。
2012-07-05 21:02 2193android开发用ndk编译so库时,有时直接从别的地 ... -
adb push的Permission denied
2012-05-30 17:19 3683遇到的问题是 zhanglanyun@zhanglan ... -
adb pull失败问题解决方法
2012-05-30 17:03 2219问题:使用adb pull命令从android系统中读取文件失 ... -
关于app2sd、a2sd、data2sd、a2sd+的区别的解释
2012-05-17 11:47 1091因为看到很多机友对这个概念不理解。首先解释一下这些缩写,全部的 ... -
什么是app2sd,app2ext,data2ext?app移动到SD卡哪里去了? /mnt/asec /mnt/secure
2012-05-17 10:56 3383Google Android手机的软件为了安全性和稳定性 ... -
android 如何自定义ProgressBar
2012-04-22 15:39 1925原文:http://blog.sina.com.cn/s/bl ... -
修改MAC,没有nvs_map.bin时该怎么做
2012-04-10 16:53 1849Basically: nvs_map.bin is what ... -
Android Activity LaunchMode 验证
2012-03-31 11:23 937在Android中,每个Activity有4种LaunchMo ... -
Android改变MAC地址
2012-03-30 13:42 21871.Find out your original MAC ad ... -
C通过JNI 层调用Java的静态和非静态方法
2012-03-26 09:47 39761、主要流程 1、 新建一个测试类TestProv ... -
使用ndk或linux下独立交叉编译(ffmpeg)
2012-03-18 21:48 23191、ndk 编译程序 在NDK的apps目录下创建he ... -
android-ndk-r7 编译 ffmpeg-0.10
2012-03-18 21:46 4617看了这篇文章 http://blog.sina.com ... -
android2.3 MODIFY_PHONE_STATE
2012-02-27 22:14 3077一直被一些莫名其妙的电话骚扰,而且只响两声就断了,一直 ... -
Androidmanifest.xml里的<uses-feature>
2011-12-27 17:10 1386如果你是一个Android用户,而且你有一个老旧的安装有and ...
相关推荐
- **特别提醒:** AppWidget可以提供快速访问应用程序的功能。 - **2.9 在屏幕中实现一个按钮效果** - **实例说明:** 添加按钮到界面上。 - **具体实现:** 在布局文件中添加Button组件。 - **特别提醒:** ...
本实例将探讨如何通过编程方式在Android应用中获取设备的硬件序列号。 首先,我们需要了解在Android SDK中获取序列号的相关API。Android提供了一个名为`android.os.Build`的类,该类包含了大量关于设备的信息,包括...
<style name="Widget.AppCompat.DatePicker" parent="android:Widget.Material.DatePicker"> <!-- 自定义属性 --> ``` 在实际应用中,`DatePickerDialog`常与`Button`或`TextView`结合使用。比如,当用户点击一个...
书中详细介绍了搭建Android开发环境的步骤,包括系统要求、软件安装、环境验证和虚拟设备的创建,涵盖了Windows、Linux和MacOS三大主流操作系统,为不同背景的开发者提供了选择。此外,还对Android SDK进行了全面的...
2. **FreeAndroidDeveloperEbook: Professional Android Application Development** - 作为一本深入的电子书,它通过提供丰富的移动应用程序实例,帮助开发者掌握专业级的Android应用开发技巧。适合那些希望快速提升...
"TestmAooWidget"可能是一个用于测试Android App Widget开发的实例。开发过程中,测试通常包括以下几个方面: 1. **设计与布局**:测试Widget的外观设计,确保其符合预期的尺寸、颜色、字体和图标。布局应适应不同...
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends ...
本篇文章将深入探讨如何在Android中实现这一功能,结合具体的代码实例来解析发送短信的原理与步骤。 首先,要发送短信,你需要使用`SmsManager`类,它是Android SDK提供的用于处理短信操作的接口。`SmsManager`提供...
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends ...
以下是一个关于如何在Android应用中实现邮件发送的详细实例解析。 首先,发送邮件的基本原理是利用Android的Intent机制,通过调用系统内置的邮件客户端来完成邮件的发送。在代码中,我们需要创建一个Intent对象,...
- **创建初始项目**:通过具体实例演示如何使用Eclipse创建第一个Android项目,并运行它。 - **项目内容**:讲解Android项目的目录结构和各组成部分的功能。 - **Manifest文件**:深入解析Android应用的核心配置文件...
### 专业知识点总结:《Professional Android 4 Application ...本书通过大量的实例和实践项目,帮助读者掌握Android 4应用程序开发的核心技能,并提供了实用的建议和技巧,帮助开发者构建出高质量的移动应用程序。
import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class CommentActivity extends ...
- **桌面小程序AppWidget**:开发AppWidget的具体步骤和技巧。 - **代码中运行二进制程序或脚本**:在应用中执行本地脚本或二进制程序的方法。 - **MD5校验**:使用Android内置的MD5算法进行数据完整性验证。 - **...