1,

掌握Widget的用:
Widget的用途,能够添加到手机桌面的程序

2,

Widget的特点和用法步骤:

特点:快捷,方便,个性化,可自定义功能,可及时控制更新Widget显示内容

3,

用法步骤流程图

  1. 绘制Widget布局
  2. 配置Widget的基本属性
  3. 定义AppWidgetProvider
  4. 提供Configuration Activity

4,

Android Widget实现一个基础的时钟功能

效果:

  • 可以自动更新时间
  • 可以添加和删除时钟Widget

5,

完整代码:

package com.example.widget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews; /**
* 类似广播,是桌面小组件Widget的Provider
*/
public class widget extends AppWidgetProvider { static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
CharSequence widgetText = context.getString(R.string.appwidget_text);
// Construct the RemoteViews object
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setTextViewText(R.id.tv, widgetText);
// Instruct the widget manager to update the widget
appWidgetManager.updateAppWidget(appWidgetId, views);
} //刷新widget的时候执行,remoteView和AppWidgetManager
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
} //第一个widget添加到屏幕上执行
@Override
public void onEnabled(Context context) {
// Enter relevant functionality for when the first widget is created
super.onEnabled(context);
//启动Service
context.startService(new Intent(context, TimerService.class));
} //最后一个widget被从屏幕移除执行
@Override
public void onDisabled(Context context) {
// Enter relevant functionality for when the last widget is disabled
super.onDisabled(context);
context.stopService(new Intent(context, TimerService.class));
} //Widget被从屏幕移除
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
} //这个方法一般不会重写,无论操作中间(上面)的哪些方法,都会执行onReceive
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
} }

 service:

package com.example.widget;

import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Intent;
import android.os.IBinder;
import android.widget.RemoteViews; import androidx.annotation.Nullable; import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask; public class TimerService extends Service { //java.util.Timer下的定时器
private Timer timer; private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
} @Override
public void onCreate() {
super.onCreate();
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
updateViews();
}
}, 0, 1000);
} private void updateViews() {
String time = sdf.format(new Date());
RemoteViews rv = new RemoteViews(getPackageName(), R.layout.widget);
rv.setTextViewText(R.id.tv, "黄朝阳666 : " + time);
AppWidgetManager manager = AppWidgetManager.getInstance(getApplicationContext());
ComponentName cn = new ComponentName(getApplicationContext(), widget.class);
manager.updateAppWidget(cn, rv);
} @Override
public void onDestroy() {
super.onDestroy();
timer = null;
} }

6,

添加和删除天气Widget:

7,

8,

Android-Widget桌面小组件的更多相关文章

  1. Android Widget(窗口小部件)

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

  2. Android桌面小组件的使用

    一:建立一个类继承AppWidgetProvider 二:建立AWP的布局文件: 布局自己定义一个,但是在使用控件上是有要求的: 以上是Widget目前支持的控件. 三:编写AWP的信息文件:需要在r ...

  3. Android开发工程师文集-1 小时学会Widget小组件开发

    前言 大家好,给大家带来Android开发工程师文集-1 小时学会Widget小组件开发的概述,希望你们喜欢 学会用Widget (小组件) Widget小组件很方便,很快捷,可以个性化,自己定制,相 ...

  4. 怎样在Android实现桌面清理内存简单Widget小控件

    怎样在Android实现桌面清理内存简单Widget小控件 我们常常会看到类似于360.金山手机卫士一类的软件会带一个widget小控件,显示在桌面上,上面会显示现有内存大小,然后会带一个按键功能来一 ...

  5. Android Widget小组件开发(一)——Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的!

    Android Widget小组件开发(一)--Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的! PS:学习自某网站(不打广告) 这个小组件相信大家都很熟悉吧,以前的墨迹天气 ...

  6. android 桌面小工具(Widget)开发教程

    刚学做了哥Widget,感觉不错哦,先来秀下效果(用朋友手机截的图) 这个Widget会每隔5秒钟自动切换内容和图片,图片最好使用小图,大图会导致你手机桌面(UI)线程卡顿 教程开始: 1.首先创建一 ...

  7. Android桌面小插件——Widget

    Android桌面小插件--Widget 效果图 实现 1. 创建Widget类 创建一个Widget类,并实现页面创建的时候,就实现显示时间 package com.kongqw.kqwwidget ...

  8. Android 之窗口小部件详解--App Widget

    Android 之窗口小部件详解--App Widget  版本号 说明 作者 日期  1.0  添加App Widge介绍和示例  Sky Wang 2013/06/27        1 App ...

  9. Android之桌面组件AppWidget

    转载:Android之桌面组件App Widget初探 Android开发应用除了程序应用,还有App Widget应用.好多人会开发程序应用而不会开发App Widget应用.本帖子就是帮助大家学习 ...

随机推荐

  1. 直接选择排序(Straight Selection Sort)

    1.定义 选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕. 常用的选择排序方法有直接选择排序和堆 ...

  2. 【杂题】[CodeForces 1172F] Nauuo and Bug【数据结构】【线段树】

    Description 给出一个长度为n的序列a和一个整数p 有m组询问,每组询问给出一个区间\([l,r]\) 你需要给出下面这个过程的结果 ans = 0 for i from l to r { ...

  3. fiddler(二)、配置抓取https协议

    打开fiddler,用火狐或者谷歌浏览器访问https协议的网页,如:https://www.baidu.com/,会报不安全的连接错误 这时就需要我们做一些配置,才能抓取https协议的网页. 首先 ...

  4. 【转】HDU-6035-Colorful Tree

    转自http://blog.csdn.net/Bahuia/article/details/76141574 题意: 题目链接:http://acm.hdu.edu.cn/showproblem.ph ...

  5. Linux如何永久打开端口

    由于防火墙导致同局域网无法通过IP访问,Linux有多种防火墙,需要查看当前使用的防火墙(开机自启),再进行配置  以下是 iptables 和 firewall 防火墙的相关配置,切忌将自己配置的防 ...

  6. js+jq 淡入淡出轮播(点击+定时+鼠标进入移出事件)

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  7. 用公共key实现无密码ssh

    1.在主服务器master下生成密钥 $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 2.将密钥放在 ~/.ssh/authorized_keys $ cat ~ ...

  8. gcc编译错误

    使用boost的时候遇到一个链接错误 undefined reference to `boost::system::detail::generic_category_instance 出现这个问题的有 ...

  9. App架构设计:接口的设计

    安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验 ...

  10. 全面解读php-开发环境及配置

    一.版本控制软件 1.集中式 (CVS和 SVN) 中间有一个中央服务器,所有的客户机都会把版本信息上传到中央服务器里,版本信息只在中央服务器里保存,当我们去上传或者下载的时候 ,都是从中央服务器来连 ...