Tip:
Highlight text to annotate it
X
HOI LAM:自定义表盘
是最令人期待的
Android Wear特色之一
在最新版本中
表盘开发受到正式的支持
我是Hoi Lam 来自Google
本讲座将介绍表盘开发
表盘是一种在后台运行的服务
我将会通过三个直观简单的步骤
讲解如何创建自己的表盘
首先 我将介绍如何创建表盘项目
然后 我们将在交互模式和微光模式下
进行自定义开发
最后但非不重要的是 我将介绍一些附加API
帮助你创建在任何条件下
都清晰可辨的表盘
我们应该如何开始呢?
最简单的方法是打开这个目录中的
表盘示例项目
有一个数字表盘和一个模拟表盘
可供你上手
在这个项目内 你将会看到两个主要的方法
它们会影响设置和渲染流程
在onCreate方法中 我们通常会 设置实例变量
包括载入位图对象
或初始化绘图对象
以绘制表盘或画布上
在onDraw方法中
我们渲染表盘上显示的每个帧
由于在画布上绘图 因此可以使用标准位图
或形状绘制功能
很重要的一点是考虑性能问题
因此代码逐帧显示图像
在创建项目之后
可在两主要模式-- 交互和微光模式下
自定义表盘
在交互模式下 表盘将显示为全彩色
并显示不同的动画
当用户查看他们的手表时
一般使用此显示模式
在微光模式下
图片仅使用有限的几种颜色
表盘更新频率仅为每分钟一次
那么 在这两种模式下
主要的自定义选项有哪些呢?
在交互模式下
模板默认为每秒更新一次
如果需要更高的更新频率
比如 想要播放动画
将需要做三件事情
首先 需要删除 mUpdateTimeHandler
否则 仅会每秒调用一次
onDraw方法
其次 需要在表盘可见时
首次触发onDraw方法
其实现方法是在 onVisibilityChange方法中
禁用图像帧
最后 需要在onDraw方法末尾
禁用图像帧
这将启动onDraw循环
从而播放流体动画
现在你看到表盘将会持续更新
很重要的一点是 在禁用图像帧之前
应检查表盘是否处于微光模式
否则 更新循环将会在后台运行
即使处于微光模式下
这将严重影响电池使用时间
在讨论交互模式之后
现在让我们来看微光模式
在微光模式下 开发人员通常需要做两项工作
首先 选择灰阶或黑白图片
然后 删除更新频率超过每秒一次的元素
例如表针
或数字显示的秒位
为了侦听手表是否进入微光模式
你可以重写
onAmbientModeChange方法
开发人员通常发送实例变量
指示手表是否处于微光模式
并禁用当前图像帧
这将触发重绘操作
然后 在再一次onDraw中
开发人员可以决定他们想要做什么
在进行基本的自定义之后
可以进行一些额外的修饰工作
除了微光模式之外
表盘API为开发人员提供附加上下文
确保表盘在所有条件下清晰可见.
我需要强调两个事项
首先 一些Android Wear设备 支持低位微光模式
这意味着屏幕像素只能开启或关闭
一般情况下
不能在这些屏幕上 重复使用灰阶设计
例如 如果对 Santa Tracker灰阶设计
不进行任何更改
在低位模式下 其显示效果将会是这样的
你可以发现 这样看上去很别扭
因此 我们使用另外一种
不同的黑白设计
为了确定设备是否支持低位模式
应该重写 onPropertiesChange方法
开发人员可以判定
手表是否支持低位微光模式
其次 这是我个人最喜欢的一个功能
即确定屏幕上
是否有peek card
这让你能够确保它不会
干扰你的表盘设计
在微光模式下 这一点尤其重要
如果没有这个功能 正如你在左侧图片上看到的那样
指针与peek card互相干扰
从而变得难以识读
在我们的最终设计中 我们绘制一个没有边框的黑色矩形
位于peek card后方 使之更容易辨识
除此之外 通过使用表盘样式类
开发人员可以指定
是否在微光模式下显示peek card
以及在交互模式下
显示为不透明或半透明
请查看文档
了解更多功能
包括如何保持时区显示条
在表盘上显示实时数据
以及在移动设备上更改表盘设置等
我是Hoi Lam
希望你们能够开发出精彩纷呈的表盘设计