Android桌面小插件——Widget

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

Android桌面小插件——Widget

效果图

这里写图片描述

实现

1. 创建Widget类

创建一个Widget类,并实现页面创建的时候,就实现显示时间

package com.kongqw.kqwwidget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
import android.widget.Toast;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

/**
 * Created by kongqw on 2015/12/31.
 */
public class KqwWidget extends AppWidgetProvider {
    @Override
    public void onDeleted(Context context, int[] appWidgetIds) {
        super.onDeleted(context, appWidgetIds);
    }

    @Override
    public void onDisabled(Context context) {
        super.onDisabled(context);
    }

    @Override
    public void onEnabled(Context context) {
        super.onEnabled(context);
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
    }

    @Override
    public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);

        Timer timer = new Timer();
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                ComponentName provider = new ComponentName(context.getApplicationContext(), KqwWidget.class);
                /*
                 * 获取Widget远程View对象
                 * 参数1 Widget的包名
                 * 参数2 Widget的布局id
                 */
                RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget);
                // 获取远程View布局中的控件
                Date date = new Date();
                DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String time = format.format(date);
                views.setTextViewText(R.id.textView, "时间:" + time);

                appWidgetManager.updateAppWidget(provider, views);
            }
        };
        // 开启定时任务,每5秒更新执行一次
        timer.schedule(timerTask, 1000, 1000);
    }


    public void method(Context context) {
        Toast.makeText(context, "KqwWidget里的方法", Toast.LENGTH_SHORT).show();
    }
}

2. 在清单文件中注册Widget控件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kongqw.kqwwidget">

    <application
        ……>
        ……

        <receiver android:name=".KqwWidget" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/appwidget_info" />
        </receiver>

    </application>
</manifest>

3. 创建Widget配置文件

在res下创建xml文件夹,在xml下创建appwidget_info.xml文件

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/appwidget"
    android:minHeight="72dp"
    android:minWidth="294dp"
    android:previewImage="@mipmap/ic_launcher"
    android:updatePeriodMillis="86400000" />

P2

4. 添加Widget布局文件

appwidget.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    tools:context="com.kongqw.kqwwidget.MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFFFFFF"
        android:gravity="center"
        android:text="时间"
        android:textColor="#FF000000"
        android:textSize="30dp" />
</RelativeLayout>

调用Widget里的方法

可以做一些操作Widget数据的操作

KqwWidget kqwWidget = new KqwWidget();
kqwWidget.method(this);
相关文章
|
SQL 人工智能 Dart
Android Studio的插件生态非常丰富
Android Studio的插件生态非常丰富
696 1
|
缓存 程序员 定位技术
Android Studio 插件,那些被大厂优化的程序员们
Android Studio 插件,那些被大厂优化的程序员们
|
人工智能 移动开发 Java
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
3962 0
Android Studio插件版本与Gradle 版本对应关系
|
Java 开发工具 Android开发
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
517 1
|
XML Java Android开发
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
449 0
|
4月前
|
监控 Android开发 数据安全/隐私保护
批量发送短信的平台,安卓群发短信工具插件脚本,批量群发短信软件【autojs版】
这个Auto.js脚本实现了完整的批量短信发送功能,包含联系人管理、短信内容编辑、发送状态监控等功能
|
8月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
1987 77
|
4月前
|
API Android开发
微信虚拟摄像头模块,微信虚拟视频聊天,安卓虚拟摄像头插件
该实现包含虚拟摄像头服务核心、视频流生成和Android配置三个关键模块,使用Camera2
|
5月前
|
存储 JSON API
安卓ck提取工具,可提取手机cookie插件,AUTOJS即可实现
怎么用autojs提取手机端的CK?其实autojs是支持提取ck的但是他提取的不是浏览器的CK,二十他自身浏览器环境的c