Android桌面小插件——Widget
16lz
2021-01-23
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" />
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);
更多相关文章
- RelativeLayout布局
- Unity各平台上读写文件-Android例子
- ionic 发布android,并查看签名文件。
- Android Studio:正确引入so文件的方法
- SAX解析XML文件
- 文件的读写操作
- 使用Android Studio开发百度地图LBS过程中遇到找不到so文件
- android6.0创建文件问题
- Android studio 不能预览布局文件