appWidget开发实例

2023-11-29 05:58
文章标签 开发 实例 appwidget

本文主要是介绍appWidget开发实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AppWidget框架类

widget 就是桌面小部件,首先我们来简单的介绍一下AppWidget的框架类。主要包括以下四个。
AppWidgetProvider-----------基于BrodCast事件操作的AppWidget的接口,当appwidget应用update,enable,disable,delete时候,通过他们可以接收到BrodCast事件。其中onUpdate、OnReceive是常用的方法,用于接收更新通知。
AppWidgetProvderInfo---------用于描述Appwidget的元数据对象,如大小,更新频率、初始化界面和AppWidgetProvider类等信息。以xml的形式存在于res/xml的文件夹下面。
AppWidgetManager---------管理appwidget,像appwidgetprovider发送通知。
RemoteViews--------可以在其他应用进程中运行的类,像AppWidgetProvider发送通知。

开发实例

首先新建一个工程,然后在layout文件夹下写好widget的布局文件这里我们命名为appwidgetlayout.xml,就是显示在桌面上的布局。不过要注意的是并不是所有的控件widget都支持。目前支持的有FrameLayout、LinearLayout、RelativeLayout、AnalogClock、Button 、Chronometer 、ImageButton、ImageView 、ProgessBar、TextView、ViewFlipper..首先给出的是布局文件
<?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="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/send"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="发送" /><TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#ffffff" /></LinearLayout>

然后就是配置我们的widget在res文件夹下面新建一个xml文件夹在里面新建一个配置文件我们命名为appwidget1.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"android:minHeight="200dp"android:minWidth="200dp"android:initialLayout="@layout/appwidgetlayout"android:updatePeriodMillis="888888" >
</appwidget-provider>
最后就是编写代码来控制了。这里我们继承AppWidgetProvider然后我们来看看代码的实现。
public class MyAppWidgetProvider extends AppWidgetProvider {private final String brodCastString="com.bobo.widgetupdate";
//删除一个widget时候调用@Override
public void onDeleted(Context context, int[] appWidgetIds) {// TODO Auto-generated method stubsuper.onDeleted(context, appWidgetIds);
}//最后一个widget删除的时候调用@Overridepublic void onDisabled(Context context) {// TODO Auto-generated method stubsuper.onDisabled(context);}//第一次创建的时候调用@Overridepublic void onEnabled(Context context) {// TODO Auto-generated method stubsuper.onEnabled(context);}/*** 接收广播事件*/@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubsuper.onReceive(context, intent);if(intent.getAction().equals(brodCastString)){RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidgetlayout);AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);ComponentName componentName = new ComponentName(context, MyAppWidgetProvider.class);remoteViews.setTextViewText(R.id.text, "点击");appWidgetManager.updateAppWidget(componentName, remoteViews);}}//到达指定更新时间或者用户向桌面添加widget时候调用@Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {// TODO Auto-generated method stubsuper.onUpdate(context, appWidgetManager, appWidgetIds);Intent intent = new Intent();intent.setAction(brodCastString);PendingIntent intent2 = PendingIntent.getBroadcast(context, 0, intent, 0);RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidgetlayout);remoteViews.setOnClickPendingIntent(R.id.send, intent2);remoteViews.setTextViewText(R.id.text, "hehe");appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);}
}

最有需要在我们的androidmainifest文件里面注册我们的广播。
 <receiver android:name="com.example.remoteviewdemo.MyWidgetProvider" ><meta-dataandroid:name="android.appwidget.provider"android:resource="@xml/appwidgetprovider" /><intent-filter><action android:name="android.appwidget.action.APPWIDGET_UPDATE" /></intent-filter><intent-filter><action android:name="com.bobo.widgetupdate" /></intent-filter></receiver>



这篇关于appWidget开发实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/431710

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示