package com.example.tyxiong.myapplication;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.widget.RemoteViews;
/*
*
* Android手机桌面组件:2种组件
* 1 快捷方式,占一个摆放位置 快速启动应用
* 2 桌面控件,可占多个摆放位置,直接运行在桌面上的小程序.
*
* 手机壁纸开发api WallpaperManager Live Wallpapers(开发动态壁纸)
*
* 通过程序向桌面添加快捷方式:3步
* 1 创建一个Intent(用于添加快捷方式),指定Action属性为INSTALL_SHORTCUT
* 2 通过为Intent指定Extra属性(接受Bundle对象),为快捷方式设置icon,title,要启动的程序
* 3 调用context方法sendBroadcast()发送广播即可.
* 还有权限呢.... <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
开发桌面控件. 概述:
1 桌面控件通过BroadcastReceiver管理的,一个控件就是一个BroadcastReceiver.
2 提供了AppWidgetProvider类,为BroadcastReceiver子类,继承它.
3 4个周期方法onUpdate()是用于更新控件的方法, onDeleted()/被删除时回调 onEnabled()收到允许广播时回调 onDisabled()
使用分为3步:
一 定义AppWidgetProvider子类,重写onUpdate()方法,方法中一般实现4步
1 创建一个RemoteViews对象,可加载布局文件(通常由imageView textView组件)
2 可通过RemoteViews对象的方法来改变布局中组件内容,如setImageViewResource()为指定id的imageView组件设置显示的内容
3 创建ComponentName对象,将我们的控件包装成该对象(Intent的component属性接收此对象)
4 调用appWidgetManager方法 updateAppWidget()将RemoteViews对象,添加到componentName组件
二 所有的BroadcastReceiver需要进行AndroidManifest.xml配置
指定action元素属性 android.appwidget.action.APPWIDGET_UPDATE
meta-data元素 name属性 resource属性
三 xml目录下定义以上所指定的meta-data的属性资源
<name
minW>最小宽度/高度 更新频率 初始布局常见属性
*/
public class Mywidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);//布局文件就一个textText而已
// remoteViews.setString(R.id.show,"setText","呵呵>>>>");上面方法提示TextView 没有setText()方法????
remoteViews.setTextViewText(R.id.show, "widget>>>啊合!!!!");
ComponentName componentName = new ComponentName(context, Mywidget.class);
appWidgetManager.updateAppWidget(componentName, remoteViews);
}
}
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<receiver
android:name=".Mywidget"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"//名字能改嘛????
android:resource="@xml/mywidget_provider" />
</receiver>
mywidget_provider.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="70dp"
android:minWidth="150dp"
android:updatePeriodMillis="1000"
android:initialLayout="@layout/activity_main"
>
</appwidget-provider>
桌面组件之桌面控件>>>
最新推荐文章于 2023-10-31 19:48:01 发布