Android之AppWidget桌面小部件开发

本文介绍了Android AppWidget的开发过程,包括Widget的理解、组件、创建方法。详细讲解了AppWidgetProviderInfo、AppWidgetProvider和布局文件的配置。还提到了Widget的更新频率限制和生命周期方法。文中以创建一个包含文本、按钮和图片的Widget为例,展示了如何实现周期性更新图片的Service。
摘要由CSDN通过智能技术生成

做需求中遇到AppWidget相关知识,所以学习了官方文档和网上中文材料,并简单学习做了一个相关的Demo。

  • Widget了解
  • Widget主要组件
  • 创建自定义Widget

Widget了解

App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。你可以通过一个App Widget Provider来发布一个Widget

Widget组成

  • AppWidgetProviderInfo
    描述一个App Widget元数据,比如App Widget的布局,更新频率,这个应该在XML里定义

  • AppWidgetProvider
    Android中提供的用于实现桌面小工具的类,其本质是一个广播,即BroadcastReceiver,用它来管理widget接收到广播后做出对应的响应处理

  • widget_layout
    用来设置widget的相关布局,但是Widget并不支持所有的布局和控件,这点需要注意。

创建一个Widget

建立一个Widget示例,要求Widget能被添加到主屏中,widget包含3个成分:文本、按钮和图片。文本要求:显示提示信息;按钮要求:点击按钮,弹出一个Toast提示框;图片要求:每个5秒随机更新一张图片

1.在修改Manifest中配置,在Manifest中注册AppWidgetProvider和负责发送更新图片广播的Service

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <!-- 声明widget对应的AppWidgetProvider -->
        <receiver android:name=".ExampleAppWidgetProvider" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                <action android:name="com.leeds.widget.UPDATE_ALL"/>
            </intent-filter>
            <meta-data android:name="android.appwidget.provider"
                android:resource="@xml/example_appwidget_info" />
        </receiver>

        <service android:name=".ExampleAppWidgetService" >
            <intent-filter>
                <action android:name="android.appwidget.action.EXAMPLE_APP_WIDGET_SERVICE" />
            </intent-filter>
        </service>

    </application>

android.appwidget.action.APPWIDGET_UPDATE,必须要显示声明的action!因为所有的widget的广播都是通过它来发送的;要接收widget的添加、删除等广播,就必须包含它。
com.leeds.widget.UPDATE_ALL,是自定义的action,是为了接收服务所发送的更新图片的广播。
ExampleAppWidgetService 是用于更新widget中的图片的服务。
android.appwidget.action.EXAMPLE_APP_WIDGET_SERVICE 用于启动服务的action

2.编辑AppWidgetProviderInfo对应的资源文件

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="180dp"
    android:minHeight="180dp"
    android:previewImage="@mipmap/ic_note"
    android:initialLayout="@layout/activity_main"
    android:resizeMode="horizontal|vertical"
    android:widgetCategory="home_screen
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值