Android桌面小部件与RemoteViews
标签(空格分隔): Android
一、简介
App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。你可以通过一个App Widget Provider来发布一个Widget。
小部件通过AppWidgetProvide来实现,AppWidgetProvide本质上是一个广播,在小部件的开发过程中会用到RemoteViews,因为小部件在更新界面时无法像在Activity中直接更新View,这是因为它的界面运行在其他进程中,确切来说是在系统的SystemServer进程中。为了跨进程更新界面,RemoteViews中提供一系列的set方法,并且这些方法只是View全部方法的子集,而且它支持的View类型也是有限的。
二、使用小部件
1.定义小部件界面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/tv_widget_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击更换内容"
android:textSize="16sp"
>
<Button
android:id="@+id/btn_widget_openactivityt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击打开MainActivity"
android:textSize="16sp"
>
</LinearLayout>
2.定义小部件配置信息
在res/xml/下新建一个appwidget_provide_info.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget"
android:minHeight="84dp"
android:minWidth="84dp"
android:updatePeriodMillis="86400000"
>
</appwidget-provider>
其中initialLayout-初始化布局,updatePeriodMillis-自动更新周期。
3.定义小部件的实现类
public class MyWidgetProvider extends AppWidgetProvider {
public static final String TAG = "MyWidgetProvider";
public static final String CLICK_ACTION = "com.gaop.HutHelper.action_click";
@Override
public void onReceive(Context cont