博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android-Widget桌面小组件
阅读量:4877 次
发布时间:2019-06-11

本文共 3758 字,大约阅读时间需要 12 分钟。

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,

 

转载于:https://www.cnblogs.com/yang101/p/11595790.html

你可能感兴趣的文章
简单四则运算表达式的java实现(1)
查看>>
django
查看>>
看paper的网址
查看>>
myna代码
查看>>
条款18 让接口容易使用,不易被误用
查看>>
SpringBoot定时任务
查看>>
获取磁盘空间
查看>>
Chap1 引言[The Linux Command Line]
查看>>
NHibernate 知识点整理
查看>>
linux初级学习笔记二:linux操作系统及常用命令,文件的创建与删除和命名规则,命令行展开以及linux中部分目录的作用!(视频序号:02_3)...
查看>>
HTML5 是什么
查看>>
用csc命令行手动编译cs文件
查看>>
hdu 4169 二分匹配最大独立集 ***
查看>>
Xamarin Android项目提示SDK版本太老
查看>>
Xamarin Essentials教程实现数据的传输功能实例
查看>>
第三十四
查看>>
BZOJ3809: Gty的二逼妹子序列
查看>>
PL2303 驱动 for win10 64 怎么搞的
查看>>
猜数字
查看>>
记一次惊心动魄的上线问题
查看>>