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
希望你們能夠開發出精彩紛呈的錶面設計