Android-Widget桌面小组件
1,
掌握Widget的用:
Widget的用途,能够添加到手机桌面的程序
2,
Widget的特点和用法步骤:
特点:快捷,方便,个性化,可自定义功能,可及时控制更新Widget显示内容
3,
用法步骤流程图
- 绘制Widget布局
- 配置Widget的基本属性
- 定义AppWidgetProvider
- 提供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桌面小组件的更多相关文章
- Android Widget(窗口小部件)
Android Widget简介 应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新.你可以通过一个App Widget Provide ...
- Android桌面小组件的使用
一:建立一个类继承AppWidgetProvider 二:建立AWP的布局文件: 布局自己定义一个,但是在使用控件上是有要求的: 以上是Widget目前支持的控件. 三:编写AWP的信息文件:需要在r ...
- Android开发工程师文集-1 小时学会Widget小组件开发
前言 大家好,给大家带来Android开发工程师文集-1 小时学会Widget小组件开发的概述,希望你们喜欢 学会用Widget (小组件) Widget小组件很方便,很快捷,可以个性化,自己定制,相 ...
- 怎样在Android实现桌面清理内存简单Widget小控件
怎样在Android实现桌面清理内存简单Widget小控件 我们常常会看到类似于360.金山手机卫士一类的软件会带一个widget小控件,显示在桌面上,上面会显示现有内存大小,然后会带一个按键功能来一 ...
- Android Widget小组件开发(一)——Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的!
Android Widget小组件开发(一)--Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的! PS:学习自某网站(不打广告) 这个小组件相信大家都很熟悉吧,以前的墨迹天气 ...
- android 桌面小工具(Widget)开发教程
刚学做了哥Widget,感觉不错哦,先来秀下效果(用朋友手机截的图) 这个Widget会每隔5秒钟自动切换内容和图片,图片最好使用小图,大图会导致你手机桌面(UI)线程卡顿 教程开始: 1.首先创建一 ...
- Android桌面小插件——Widget
Android桌面小插件--Widget 效果图 实现 1. 创建Widget类 创建一个Widget类,并实现页面创建的时候,就实现显示时间 package com.kongqw.kqwwidget ...
- Android 之窗口小部件详解--App Widget
Android 之窗口小部件详解--App Widget 版本号 说明 作者 日期 1.0 添加App Widge介绍和示例 Sky Wang 2013/06/27 1 App ...
- Android之桌面组件AppWidget
转载:Android之桌面组件App Widget初探 Android开发应用除了程序应用,还有App Widget应用.好多人会开发程序应用而不会开发App Widget应用.本帖子就是帮助大家学习 ...
随机推荐
- UVA 10491 Cows and Cars (全概率公式)
#include<bits/stdc++.h> #include<stdio.h> #include<iostream> #include<cmath> ...
- K8S容器探针
容器探针 探针是由 kubelet对容器执行的定期诊断.要执行诊断, kubelet 调用由容器实现的 Handler .有三种类型的处理程序: ExecAction :在容器内执行指定命令 ...
- 【CF1262F】Wrong Answer on test 233(数学)
题意:给定n道题目,每道题目有k个选项,已知所有正确选项,选对1题得1分 问循环后移一格后总得分s2大于原先总得分s1的方案数 n<=2e5,1<=k<=1e9 思路:特判k=1 e ...
- pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例 脚本专栏 python 1. 用qt designer编写主窗体,窗体类型是MainWindow,空白窗口上一个按钮.并转换成mai ...
- win10 exe如何添加或禁用开机自启动项
一.添加开机自启动 1,先打开存放自启动软件文件的文件夹 方法①:在文件搜索框中输入或粘贴以下地址: C:\ProgramData\Microsoft\Windows\Start Menu\Progr ...
- JS框架_(JQuery.js)点赞按钮动画
百度云盘 传送门 密码: 0ihy 点赞按钮动画效果: (点击一次随机生成一颗小爱心,作为点赞动画~) <!doctype html> <html lang="en&quo ...
- 环信及时通讯 Laravel 扩展包
laravel-easemob 环信及时通讯 laravel 包开发,用于环信用户.群.聊天室等功能 github 地址 安装 加载包 "link1st/laravel-easemob& ...
- 通过tar包解压安装docker
以下步骤在centos7和debian10中验证通过 1.通过官网下载安装包 wget https://download.docker.com/linux/static/stable/x86_64/d ...
- vue中limitBy,filterBy,orderBy的用法
1.limitBy的用法 <body> <div id="box"> <ul> <li v-for="val in arr | ...
- Docker-----版本选择
版本演变 17.03 版本以前 Docker CE 在 17.03 版本之前叫 Docker Engine, Docker Engine 的版本号范围: 0.1.0 ~ 1.13.1 17.03 版本 ...