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

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋葵好吃吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值