全面讲解Android App Widgets之基本使用(一)

简介

App Widgets他是一个迷你的Application Views他能嵌入到其他应用程序里(例如:桌面)并且它还能接受一个周期性的更新,所有称她为桌面小部件

全面讲解Android App Widgets之基本使用(一)_第1张图片

可以看到这是一个天气的桌面插件,他上面可以显示时间,日期,天气,同时还有背景,是不是很方便呢,这种部件对新闻类应用,代办事项等这类软件很有帮助,因为我们不需要打开客户端就能获取到信息,同时对于用户是没有时间消耗的,因为他解锁屏幕就看见了,不经意间的~

创建一个App Widgets的一般步骤

AppWidgetProviderInfo

来描述一些Widget的元数据,比如:更新周期,布局,所对应的class灯,是一个xml文件

AppWidgetProvider

我实现它提供一些的接口,比如:Widget的创建,第一次添加,删除等状态,他是一个类参考这里

View Layout

这很容易理解啦,就是要显示的布局,你不告诉他,他怎么知道要显示TextView还是ImageView,对吧

清单文件配置状态广播

因为AppWidgetProvider实际上是一个receiver,你说要不要配置

可选配置:

我们可以设置一个App Widget的配置Activity,他可以在你启动App Widget时提供一些配置

下面我们来创建一个简单的App Widget

布局

这里有个问题就是这里不支持一些输入控件,比如:EditText,它支持的布局有:

FrameLayout
LinearLayout
RelativeLayout
GridLayout

支持的控件有:

AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView
ViewFlipper
ListView
GridView
StackView
AdapterViewFlipper

同时也支持ViewStub

添加Widget的margin

通过情况下我们Widget的内容不应该太靠近屏幕的边缘了,所有要设置一个margin,在Android 4.0上他会自动的加上的margin,基于这样的需求,所有我们需要采用如果方法适配这个margin

设置targetSdkVersion为14或者更高

创建一个布局




    
        
    


创建尺寸资源

res/values/dimens.xml:

8dp

res/values-v14/dimens.xml:

0dp

使用AppWidgetProvider

这个和使用Activity差不多,如果你要有Activity的一些特性,你既要继承他,这样也是一样的

AppWidgetProvider是一个继承了BroadcastReceiver的类,他用来接受Widget的一些事件,比如:Widget的更新,删除,启用和禁用并回调相应的事件方法

onUpdate()

这个方法是第一次创建Widget(如果设置配置activity他不调用)和到达我们配置的updatePeriodMillis时间时调用,所以在这我们执行一些基本设置,事件处理,或者创建一个临时的Service

创建Widget配置文件

res/xml/basic_widget.xml




···

其中我们指定了更新的间隔时间,初始化布局,以及预览图片

## 配置BasicWidget

因为它本身是一个BroadcastReceiver,所以和使用普通的BroadcastReceiver没有什么两样,同样需要配置

```xml

    
        
    
    

其中android:resource就是我们上面创建的的Widget配置文件

到这时候,我们的Widget基本已经完成了,运行代码到手机,就可以在控件列表找到我们只做的控件,添加到桌面上的效果如下:

全面讲解Android App Widgets之基本使用(一)_第2张图片

点击其中的按钮是可以打开我们应用主界面的

Widget尺寸

我们可以在桌面看到很多控件,他们有大小有高有矮,有的甚至还可以在添加的时候动态调整尺寸,那么下面我们就来看看,怎么实现这些功能吧

我看到上面的描述文件里指定了android:minWidth和android:minHeight,必须指定这两个属性,他的最小尺寸是一个格子更新信息参考这里也就是40dp,如果小于这值,他默认就是40dp,其中尺寸的计算公式是70 × n − 30,其中n是暂几格

比如:我要3格,那个尺寸应该为:180dp

minResizeWidth:最小可调整到的尺寸,比如:我最小尺寸是110dp,也就是两格,但是如果设置android:minResizeWidth="40dp",可以调整最小为一格,用户添加的时候默认是2格,这个用意的设计就是推荐2格的空间,但是要是桌面有点挤,缩成1格也是可以的。如果大于minResizeWidth将忽略

这一篇就到这里,下一篇我们会讲解Widget的高级使用,以及一个使用实例

参考:http://blog.csdn.net/jjwwmlp456/article/details/38466969
http://www.cnblogs.com/devinzhang/archive/2012/01/26/2329790.html
http://developer.android.com/guide/topics/appwidgets/index.html
很详细和官方文档差不多:http://blog.csdn.net/dyllove98/article/details/9199195

你可能感兴趣的:(全面讲解Android App Widgets之基本使用(一))