我的桌面插件大概分了两块,一块为一个小的桌面时钟,根据系统时间变化来设定时间。第二个是几个Textview和一个imageView来显示当前城市的天气,温度,还有一个小的天气图标。
小插件的实现要自己重写一个类继承AppWidgetProvider这个父类,并重写onUpdate()方法(并不规定一定要重写,但是这样的话这个插件就没有实际的意义)。AppWidget和Activity.Service等一样需要在Mainfest文件中注册才能使用。要实现AppWidget同样需要两个xml文件,一个xml文件定义了一个appwidget-provider控件的各种属性:
<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="300dip" android:minHeight="50dp"
android:updatePeriodMillis="1000"
android:initialLayout="@layout/widget_layout"
>
</appwidget-provider>
高度宽度就不说了,android:updatePeriodMillis规定了这个插件的更新的频率,个人理解是一旦到了这个频率就执行onUpdate里面的代码,但是我现在写的1000实际上是没有意义的,现在的安卓系统为了不让插件太占用系统电量和内存,规定android:updatePeriodMillis这个值不能低于30分钟,也就是 1800000毫秒,低于这个值的会自动默认为30分钟,那么我们要实现每分钟更新一次系统时间就得自己调用Service或者广播来实现,我这里是调用handler机制实现的。
还有就是android:initialLayout这个表示插件的布局文件,用@layout引用。
因为我的时钟并不是textv