桌面组件之桌面控件>>>

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()发送广播即可.
*       还有权限呢....    

     开发桌面控件. 概述:
        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的属性资源
            最小宽度/高度 更新频率 初始布局常见属性
                 */

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);
    }
}


    "com.android.launcher.permission.INSTALL_SHORTCUT" />

 ".Mywidget"
            android:label="@string/app_name">
            
                "android.appwidget.action.APPWIDGET_UPDATE" />


            
            "android.appwidget.provider"//名字能改嘛????
                android:resource="@xml/mywidget_provider" />
        

mywidget_provider.xml
"1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
    android:minHeight="70dp"
    android:minWidth="150dp"
    android:updatePeriodMillis="1000"
    android:initialLayout="@layout/activity_main"
    >

你可能感兴趣的:(笔记)