- Android入門基礎:從這裡開始
- Android分享操作
- Android多媒體
- Android圖像與動畫
- Android網絡連接與雲服務
- Android聯繫人與位置信息
- Android可穿戴應用
- Android TV應用
- Android企業級應用
- Android交互設計
- Android界面設計
- Android用戶輸入
- Android後臺任務
- Android性能優化
- Android安全與隱私
- Android測試程序
定位常見的問題
編寫:heray1990 - 原文: http://developer.android.com/training/wearables/watch-faces/issues.html
創建 Android Wear 的客製化錶盤與創建 notification 和可穿戴特有的 activity 的方法不同。這幾課介紹如何解決我們在實現第一個錶盤時會遇到的一些問題。
檢測屏幕的形狀
一些 Android Wear 設備的屏幕是方形的,另一些是圓形的。圓形屏幕的設備可以在屏幕的底部包含一個插入部分(或者“下巴”)。我們的錶盤應該適應和利用好屏幕特定的形狀,如 設計指南 中的描述。
Android Wear 讓錶盤在運行時決定屏幕的形狀。為了檢測屏幕是方形還是圓形,需要像下面的代碼一樣重寫 CanvasWatchFaceService.Engine
類的 onApplyWindowInsets()
方法:
private class Engine extends CanvasWatchFaceService.Engine {
boolean mIsRound;
int mChinSize;
@Override
public void onApplyWindowInsets(WindowInsets insets) {
super.onApplyWindowInsets(insets);
mIsRound = insets.isRound();
mChinSize = insets.getSystemWindowInsetBottom();
}
...
}
當重新繪製錶盤時,檢查成員變量 mIsRound
和 mChinSize
的值來適應我們的設計。
容納 Card
當用戶接收到一個 notification,notification card 可能會遮蓋屏幕很大一部分,這取決於系統 UI 的風格。錶盤應該適應這些情況,確保當 notification card 出現時用戶仍然可以看到時間。
當 notification card 出現時,模擬錶盤需要調整,如縮小錶盤使得自身不被 card 覆蓋。數字表盤在屏幕顯示時間的區域不會被 card 覆蓋,通常不需要作出調整。使用 WatchFaceService.getPeekCardPosition()
方法確定在 card 上方可用於調整錶盤的空間。
Figure 1. 當 notification card 出現時,一些模擬錶盤需要調整
在環境模式下,card 的背景是透明的。如果我們的錶盤在環境模式下,card 的附近包含詳細的信息,那麼可以考慮在 card 的上面繪製一個黑色方塊,確保用戶可以讀到 card 的內容。
配置系統指示圖標
為了確保系統指示圖標一直可見,當創建一個 WatchFaceStyle
實例時,我們可以將配置系統指示圖標在屏幕的位置和決定是否需要背景保護:
- 使用
setStatusBarGravity()
方法設置狀態欄的位置。 - 使用
setHotwordIndicatorGravity()
方法設置熱詞的位置。 - 使用
setViewProtection()
方法,用一個灰色的半透明背景保護狀態欄和熱詞。由於系統指示圖標是白色的,如果我們的錶盤背景是明亮的,這樣做事很必要的。
Figure 2. 狀態欄
更多關於系統指示圖標的內容,請查看配置系統 UI 和 設計指南。
使用相對尺寸
不同廠商的 Android Wear 設備屏幕會有不同的尺寸和分辨率。我們的錶盤應該通過使用相對尺寸而不是絕對像素值來適應這些差異。
當我們繪製錶盤時,用 Canvas.getWidth() 和 Canvas.getHeight() 方法獲得畫布的尺寸,然後以屏幕尺寸一部分所佔比例的值來設置圖片的位置。如果重新繪製錶盤的組件來響應 card,那麼根據屏幕裡 card 上方剩下空間所佔比例的值來重新繪製錶盤。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论