今天抽空去看了下办公场所,准备做点儿自己感兴趣的东西了,然后今天简单的说了下大概的一个需求,前期我就先自己做点儿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 记