- 我们手机上安装的软件一般都会带一些小组件,这些小组件一般可以增加用户体验,更好的将自己的服务呈现给用户,我们就来看看最简单的小组件的使用。
- 所谓桌面小控件,就是能之间显示在Android系统桌面的小程序。
桌面小控件的实现是基于Broadcast的形式实现的,因此,每一个桌面小控件都对应于一个BroadcastReceiver类。Android系统提供了一个AppWidgetProvider类(它就是BroadcastReceiver的子类),这个类很关键,你在写桌面小控件时只需继承这个类就行。继承了AppWidgetProvider类之后,你可以根据自己的需要覆盖它的不同的生命周期的方法,来达到自己的目的。
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="100dp"
android:minHeight="30dp"
android:updatePeriodMillis="86400000"
android:initialLayout="@layout/layout_widget">
</appwidget-provider>
- minWidth和minHeight
- 高度宽度就不说了
- android:updatePeriodMillis
- 规定了这个插件的更新的频率,一旦到了这个频率就执行onUpdate里面的代码,安卓系统为了不让插件太占用系统电量和内存,规定android:updatePeriodMillis这个值不能低于30分钟,也就是1800000毫秒,低于这个值的会自动默认为30分钟,那么我们要实现每分钟更新一次系统时间就得自己调用Service或者广播来实现,手动更新这篇博客先不讲,下篇在详细讲解
- Android:initialLayout这个表示插件的布局文件,用@layout引用。
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
Log.d("haha","小组件被调用了");
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
Log.d("haha","小组件被删除了");
}
- 上述两个方法,会在小组件添加和删除的时候调用,这篇博客只讲解让最简单的小组件显示出来,下篇在讲解内容的展示等逻辑。
<?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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="我是最简单的小组件"
android:textColor="#000000"
android:id="@+id/textView" />
</LinearLayout>
- 这个布局文件就是小组件的呈现的布局,我只是在里面添加了一个TextView显示了一行文本内容而已。
4.在AndroidManifest文件中进行注册
<receiver
android:name=".MyWedget"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appwidget_provider" />
</receiver>
- 在前面已经说了,桌面小控件的实现是基于Broadcast的形式实现的,因此我们需要在AndroidManifest对其进行注册。