记录一下Android桌面小工具的实现方式

1.注册

首先需要在AndroidManifest.xml中进行注册,类似Activity、Service的注册方式:

android:name="android.appwidget.provider"

android:resource="${APP_WIDGET}" />

2.继承AppWidgetProvider实现

public class MonitorWidgetProvider extends AppWidgetProvider{

public MonitorWidgetProvider() {

super();

}

@Override

public void onReceive(Context context, Intent intent) {

super.onReceive(context, intent);

}

@Override

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

super.onUpdate(context, appWidgetManager, appWidgetIds);

}

@Override

public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) {

super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions);

}

@Override

public void onDeleted(Context context, int[] appWidgetIds) {

super.onDeleted(context, appWidgetIds);

}

@Override

public void onEnabled(Context context) {

super.onEnabled(context);

}

@Override

public void onDisabled(Context context) {

super.onDisabled(context);

}

@Override

public void onRestored(Context context, int[] oldWidgetIds, int[] newWidgetIds) {

super.onRestored(context, oldWidgetIds, newWidgetIds);

}

}

从这些可以覆盖的方法名称就可以知道其调用的位置

3.配置文件

注意这里的${APP_WIDGET}是对应的配置文件,我们需要在res/xml中创建:

<?xml version="1.0" encoding="utf-8"?>

android:initialLayout="@layout/view_monitor_sense"

android:previewImage="@mipmap/ic_launcher_sense"

android:minWidth="320dp"

android:minHeight="110dp"

android:updatePeriodMillis="60000"

android:resizeMode="horizontal|vertical"

android:minResizeWidth="250dp"

android:minResizeHeight="40dp">

解释一下这些参数的意思:

android:initialLayout:对应的布局;

android:previewImage:桌面插件管理界面显示的icon;

android:minWidth:最小宽度,这个宽度计算为:70*n-30,n代表的时在桌面上占用n个格子;

android:minHeight:最小高度,同上;

android:minResizeWidth:最小可调节宽度,结合上方的最小宽度实现后结果即,插件第一次拖拽到桌面时候占用五个格子,长按调节宽度,最小可调节到四个格子宽;

android:minResizeHeight:最小可调节高度,同上;

android:resizeMode:可调节方向,回调方法为onAppWidgetOptionsChanged(...);

android:updatePeriodMillis:给定间隔更新,单位毫秒,回调方法为onUpdate(...);

4.主动更新Widget

我们在注册的时候就添加了action:

类似于发送静态广播,如下操作就可以主动更新Widget:

Intent intent = new Intent(MonitorWidgetProvider.APP_WIDGET_REFRESH);

sendBroadcast(intent);

注意,主动更新Widget中回调的方法为onReceive;

5.RemoteViews获取布局元素

在Widget中需要使用RemoteViews类来操作布局元素,这里和Notication中元素的操作类似:

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.view_monitor_all);

基本的元素操作就不再赘述,记录一下如何跳转到对应App指定界面事件:

Intent intent = new Intent(MyApplication.getInstance(), MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(MyApplication.getInstance(), 0, intent,

PendingIntent.FLAG_UPDATE_CURRENT);

remoteViews.setOnClickPendingIntent(R.id.ll_widget_all, pendingIntent);

以上就是实现一个Widget需要记录的了,ok~

Android好用的桌面小工具,Android桌面小工具Widget功能实现相关推荐

  1. Android 自定义水波球清理内存的悬浮窗小工具

    一.概述 现在一些手机管家都会有一个用来清理内存的悬浮窗小工具,感觉挺实用的,就自己做了一个.首先介绍一下这个工具的功能,除了可以清理内存,还有调节手机屏幕亮度.手电筒.无线网.移动数据.蓝牙.GPS ...

  2. Android应用小工具(窗口小部件)

    Widget是可以在其他应用程序被嵌入和接收定期更新的微型应用程序视图. 在创建一个应用程序窗口小部件,需要满足以下条件: AppWidgetProviderInfo--描述元数据为应用窗口小部件,如 ...

  3. android 开发小工具,Android 开发者必备的八款小工具

    在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一些Android 开发必备的小工具. Android Pixe ...

  4. Android开发实用小工具三——面积转换工具

    文章目录 前言 一.效果展示 二.代码 主代码 总结 前言 面积转换工具的开发与实现. 一.效果展示 二.代码 准备工作和样式布局与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一篇文章. ...

  5. Android开发实用小工具九——温度转换工具

    文章目录 前言 一.效果展示 二.代码 1.样式布局 2.主代码 总结 前言 温度转换工具的开发与实现. 一.效果展示 二.代码 准备工作与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一 ...

  6. Android开发实用小工具五——速度转换工具

    文章目录 前言 一.效果展示 二.代码 主代码 总结 前言 速度转换工具的开发与实现. 一.效果展示 二.代码 准备工作和样式布局与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一篇文章. ...

  7. Android开发实战《手机安全卫士》——7.“高级工具”模块结尾 小火箭动画

    文章目录 1.高级工具--Toast提示框的双击事件 2.高级工具--服务中处理Toast提示框的拖拽事件 3.拓展功能--小火箭需求分析 4.拓展功能--小火箭的业务实现 1.高级工具--Toast ...

  8. 【Android开发日常】一文弄懂桌面图标快捷菜单 桌面小组件

    本文将介绍如何创建和管理应用快捷方式.如何创建和管理应用桌面小组件. 目录 一.桌面菜单 1.1 概览 1.2.为什么需要桌面图标快捷菜单 1.3.如何实现桌面图标快捷菜单 1.3.1 创建静态快捷方 ...

  9. Android10.0系统启动之Launcher(桌面)启动流程-[Android取经之路]

    摘要:上一节我们讲完了Android10.0的ActivityManagerService的启动流程,在AMS的最后启动了Launcher进程,今天我们就来看看Launcher的真正启动流程. 阅读本 ...

  10. 将Android手机打造成你的Python开发者桌面#华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

最新文章

  1. 重磅|我国科学家成功研制全球神经元规模最大的类脑计算机
  2. 良心之作!超过 10000+ 的互联网团队正在使用的在线 API 文档、技术文档工具
  3. 移动端 项目开发经验集锦
  4. 微变等效电路法分析放大电路
  5. ant-build.xml打包报错解决方法
  6. java性能调试命令_性能测试必备监控技能jvm之jdk命令行工具篇16
  7. Android 的蓝牙简介
  8. in与exist , not in与not exist 的区别
  9. NVIDIA更新驱动之后,NVIDIA控制面板消失不见的解决办法
  10. C# 关于递归算法 具象化
  11. H3C交换机远程端口镜像配置
  12. 二叉树的前序中序后序遍历图示
  13. 2015年看的52部电影计划
  14. LeetCode-搜索二维矩阵
  15. 破解猫眼动态加载的票房数据
  16. React TSLint中常见的问题及处理方法
  17. 2018校招笔试真题汇总(java/C++)
  18. 干货!出色的UI设计师需要具备的3个基础修养
  19. 如何在 JavaScript 中等待函数完成
  20. 符号(void *)何解?符号(void **)又何解??

热门文章

  1. 小包实用工具:国家代码大全
  2. ZDNS正式成为“.ren”顶级域名注册管理机构
  3. fc安卓模拟器_[10月26号]VirtuaNES FC游戏模拟器:附300个无敌版Roms游戏!非常受欢迎的FC游戏模拟器...
  4. stellarium-0.19.3.1-win64.exe下载
  5. 1038 统计同成绩学生
  6. flashfxp用什么协议连接服务器,flashfxp怎么连接,flashfxp怎么连接,具体的连接方法...
  7. POI 处理word 文档中 文本框模板
  8. Java毕业设计_智能快递柜的设计与实现
  9. 像韩寒一样活着 南方人物周刊(转)
  10. 2019-04-01 银行的零售业务和对公业务