android widget的中文文档

  次阅读 来源:互联网(转载协议) 2015-10-03 10:41 我要评论(0)

下文是我翻译于 App Widgets的文章,如果有不当之处请大家指出

app widget是一种嵌入在其他应用(例如主屏幕)和并且能偶接受间接性更新的小应用,你可以自己提供app widget provider 来在用于界面上定义app widget,包含了appwidget的应用程序组件叫做app widget host.

1.基础的工作

AppWidgetProviderInfo 对象

描述了app widget 所需的元数据,例如app widget 的布局,更新的频率 和实现AppWidgetProvider的类,这些都应该定义的XML文件夹中。

继承实现AppWidgetProvider对象

定义了一些基本的方法,这些方法能够让你与app widget进行交互,这些方法都是基于android的广播事件,当你的app widget调用updated(),enabled(),disabled()和delete()的方法的时候都会接收到广播。

2.在AndroidManifest.xml文件中进行相应的配置

首先需要在AndroidManifest.xml中声明你自己实现的AppWidgetProvider类,如下

标签需要指定android:name这个属性,这个标签指定了你自己继承实现AppWigetProvider的类,同时你还要在这个标签中指定一个包含android:name的标签,这个标签表示将会去过滤会包含了ACTION_APPWIDGT_UPDATE的广播,这是唯一一个是你必须要明确指定接受的广播,系统的AppWidgetManager将会自动的将app widget广播发送到需要接受的AppWidgetProvider的实现类中。

元素指定了AppWidgetProviderInfo的信息并且必须包含下面两个信息。

android:name:这个属性指定了元数据的名称。使用android.appwidget.provider来指定数据作为AppWidgetProviderInfo的描述信息。

anndroid:resources 来指定AppWidgetProviderInfo描述信息的位置。

3.添加AppWidgetProviderInfo的元数据

AppWidgetProviderInfo定义了App Widget的基本信息,例如布局尺寸的最小值,和初始化布局文件的资源,更新app widget的频率,同时你还可以定义在创建widget的时候启动一个activity,这一项是可选的。你需要在res下新建一个xml目录,在这个目录中创建一个xml文件,这个xml文件的根元素必须要是,例如下面的例子。

下面是对xml文件中元素的说明

minWidth和minHeight属性指定了app widget布局文件所需要最小尺寸。

在主屏幕上放置的app widget取决于定义了宽和高的网格,如果我们自定义的最小宽或者高不和屏幕网格中的格子不匹配,那么app widget的尺寸会自动的变成与当前格子最匹配的尺寸,因为屏幕的方向是可以改变的,因此网格格子尺寸大小也是可以变化的,所以建议你假设格子的宽和高的值为74像素,同时,你应该从最终的尺寸计算中减去2,因为可能会出现的像素计算问题。为了计算出最佳的宽和高,建议你使用下面的公式。

(number of cells * 74) - 2

因此,可以使用72来作为一个app widget的高,使用294来作为一个app widget的宽,宽度包含了四个格子。

updatePeriodMillis属性定义了app widget要求调用AppWidgetProvider 实现类的onUpdate方法的频率。但是并不能保证能够在准确的时间去调用这个更新方法,我们建议这个更新的周期越大越好,从省电的角度来看,一个小时不要超过一次。你也应该允许用户去配置这个调用的周期,例如有人需要每一刻钟去更新证券的信息,有的人可能一天只更新四次。注意:如果到了更新的时候,设备正处于休眠期,那么设备将会被唤醒去完成这次更新。如果你一个小时以内更新的频率低于一次,那么这将不会对你的电池造成什么明显的影响,如果你更新的十分频繁,或者不需要在设备休眠的时候更新,那么建议你使用闹钟来完成这个功能,在闹钟中你可以设定是否需要唤醒设备。你可以设定闹钟的类型为ELAPSED_REALTIME或者RTC,这将只在设备处于唤醒状态进行更新。那么在这种情况下,你可以设定updatePeriodMillis为0

initiaLayou属性指定了app widget的布局文件。

configure属性指定了当用户创建一个app widget的时候需要启动的activity,这个属性允许用户去设定app widget的属性.。这一项是可选的。

4.创建App Widget的布局文件

必须定义一个在res/layout中定义一个布局文件,来作为app widget的初始化布局文件。你可以使用下面列表中出现的View对象来作为布局文件。

如果你属性创建布局文件,那么创建一个app widget的布局文件同样是一个很简单的事情,但是需要注意的事情是app widget的布局是基于RemoteViews的,这些并不是支持所有的布局文件,只有下面三种是被支持的:FrameLayout,LinearLayout和RelativeLayout,同时下面这七种Widget对象也是被支持的:AnalogClock,Button,Chronometer,ImageButton,ImageView,ProgressBar和TextView。

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...