Android的App Widget实现

今天抽空去看了下办公场所,准备做点儿自己感兴趣的东西了,然后今天简单的说了下大概的一个需求,前期我就先自己做点儿android方面的知识储备了,下午回来剪了头发,改头换面,看了《恐怖直播》这部很棒的韩国电影之后(还是不喜欢韩国人说话的那种。。说不出来的感觉,就是不喜欢,就跟听别的地方的方言一样,像汉语但又不是汉语,原谅我扯远了),好吧,简单的说就是今天过了很充实的一天,接下来要做的东西,需要在android方面下功夫,而且我大概也知道该往哪个方向走,所以就趁着晚饭之后的时间,研究了一下App Widget这个东东。

好吧,具体的也不想多说,至于这个是啥,android系统用户掏出手机看下,Widget就知道了,说白了就是那种桌面的小组件,官方参考资料:我是奇妙的传送门,这个是官网的,介绍的比其他的地方都好,所以,自己去看下,没啥问题的,这里我就简单的记述一下我的过程好了。

首先我们创建一个AppWidget的空白工程,可以不用创建Activity的。

接下来,我们在layout目录下创建一个Widget的显示布局文件,命名为:widget.xml,以下是文件的代码内容:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
			  android:gravity="center" >
	<TextView android:layout_height="wrap_content"
	          android:layout_width="wrap_content"
	          android:id="@+id/textView1"
	          android:text="这个是App Widget的Demo"
	          android:textColor="#ff0000ff" />
</LinearLayout>
简单说下,就是写了一个TextView,显示"这个是App Widget的Demo"。
然后,在res目录下,创建一个xml文件夹,在xml目录下,创建一个provider_info.xml文件,用来配置Widget占屏幕的宽度高度以及更新频率啥的,其他详细的参数请参考该页: 我是AppWidgetProviderInfo的传送门,我们这里就简单的定义这么一个配置文件就好了,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- appwidget-provider Widget的配置文件  -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
	android:initialLayout="@layout/widget"
	android:updatePeriodMillis="86400000"
	android:minHeight="72dp"
	android:minWidth="294dp" >
</appwidget-provider>

接下来我们还要修改一下AndroidManifest.xml文件,在applicatioin节点下添加一个receiver节点,具体代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.eric.appwidget"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="15" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <receiver android:name="appWidgetProvider">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
            </intent-filter>
            <meta-data android:name="android.appwidget.provider" android:resource="@xml/provider_info"></meta-data>
        </receiver>
    </application>

</manifest>

完成了上述步骤之后,我们创建一个用java类,用来处理Widget的请求,继承自AppWidgetProvider类,这里我们没有写任何的处理方法,不过这些方法的作用,相信大家看方法命名也能大概了解一些了,还是那句话,具体你要处理的东西,请参考AppWidgetProvider的详细页面:我是AppWidgetProvider的传送门,这里我们的代码如下:

package com.example.appwidget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;

/**
 * Created by Administrator on 13-10-19.
 */
public class appWidgetProvider extends AppWidgetProvider
{
    @Override
    public void onReceive(Context contex,Intent intent)
    {
        super.onReceive(contex,intent);
    }

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

    @Override
    public void onDeleted(Context context, int[] appWidgetIds)
    {
        super.onDeleted(context, appWidgetIds);
    }

    @Override
    public void onEnabled(Context context)
    {
        super.onDisabled(context);
    }
}
具体的处理方法,写在相应的方法里面,例如onReceive方法会处理每个请求,onEnabled方法会在App Widget第一次被放到手机桌面上时调用,等等,至于其他的,大家点击传送门去查看即可。

OK,接下来我们来运行一下,看下实际的效果如何:


划红线的地方就是我们自己制作的App Widget了,这个大小是可以自定义的,大家到时候自行定制一下即可,然后我们来看看把它拖拽到桌面上会是一个什么样儿的效果:


当然,这个是一个简单的入门级别的demo,所以简陋了一下,大家也可以参照官网的介绍,做一个效果更炫的,不过大体思路还是这样儿的,当然,App Widget也可以配合App一起使用,就跟QQ空间的那个插件一样,关键就看你如何去自定义了。


2013年10月19日,Eric.Tang 记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值