W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
編寫(xiě):heray1990 - 原文: http://developer.android.com/training/wearables/watch-faces/issues.html
創(chuàng)建 Android Wear 的客制化表盤(pán)與創(chuàng)建 notification 和可穿戴特有的 activity 的方法不同。這幾課介紹如何解決我們?cè)趯?shí)現(xiàn)第一個(gè)表盤(pán)時(shí)會(huì)遇到的一些問(wèn)題。
一些 Android Wear 設(shè)備的屏幕是方形的,另一些是圓形的。圓形屏幕的設(shè)備可以在屏幕的底部包含一個(gè)插入部分(或者“下巴”)。我們的表盤(pán)應(yīng)該適應(yīng)和利用好屏幕特定的形狀,如 設(shè)計(jì)指南 中的描述。
Android Wear 讓表盤(pán)在運(yùn)行時(shí)決定屏幕的形狀。為了檢測(cè)屏幕是方形還是圓形,需要像下面的代碼一樣重寫(xiě) CanvasWatchFaceService.Engine
類(lèi)的 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();
}
...
}
當(dāng)重新繪制表盤(pán)時(shí),檢查成員變量 mIsRound
和 mChinSize
的值來(lái)適應(yīng)我們的設(shè)計(jì)。
當(dāng)用戶接收到一個(gè) notification,notification card 可能會(huì)遮蓋屏幕很大一部分,這取決于系統(tǒng) UI 的風(fēng)格。表盤(pán)應(yīng)該適應(yīng)這些情況,確保當(dāng) notification card 出現(xiàn)時(shí)用戶仍然可以看到時(shí)間。
當(dāng) notification card 出現(xiàn)時(shí),模擬表盤(pán)需要調(diào)整,如縮小表盤(pán)使得自身不被 card 覆蓋。數(shù)字表盤(pán)在屏幕顯示時(shí)間的區(qū)域不會(huì)被 card 覆蓋,通常不需要作出調(diào)整。使用 WatchFaceService.getPeekCardPosition()
方法確定在 card 上方可用于調(diào)整表盤(pán)的空間。
Figure 1. 當(dāng) notification card 出現(xiàn)時(shí),一些模擬表盤(pán)需要調(diào)整
在環(huán)境模式下,card 的背景是透明的。如果我們的表盤(pán)在環(huán)境模式下,card 的附近包含詳細(xì)的信息,那么可以考慮在 card 的上面繪制一個(gè)黑色方塊,確保用戶可以讀到 card 的內(nèi)容。
為了確保系統(tǒng)指示圖標(biāo)一直可見(jiàn),當(dāng)創(chuàng)建一個(gè) WatchFaceStyle
實(shí)例時(shí),我們可以將配置系統(tǒng)指示圖標(biāo)在屏幕的位置和決定是否需要背景保護(hù):
setStatusBarGravity()
方法設(shè)置狀態(tài)欄的位置。setHotwordIndicatorGravity()
方法設(shè)置熱詞的位置。setViewProtection()
方法,用一個(gè)灰色的半透明背景保護(hù)狀態(tài)欄和熱詞。由于系統(tǒng)指示圖標(biāo)是白色的,如果我們的表盤(pán)背景是明亮的,這樣做事很必要的。Figure 2. 狀態(tài)欄
更多關(guān)于系統(tǒng)指示圖標(biāo)的內(nèi)容,請(qǐng)查看配置系統(tǒng) UI 和 設(shè)計(jì)指南。
不同廠商的 Android Wear 設(shè)備屏幕會(huì)有不同的尺寸和分辨率。我們的表盤(pán)應(yīng)該通過(guò)使用相對(duì)尺寸而不是絕對(duì)像素值來(lái)適應(yīng)這些差異。
當(dāng)我們繪制表盤(pán)時(shí),用 Canvas.getWidth()) 和 Canvas.getHeight()) 方法獲得畫(huà)布的尺寸,然后以屏幕尺寸一部分所占比例的值來(lái)設(shè)置圖片的位置。如果重新繪制表盤(pán)的組件來(lái)響應(yīng) card,那么根據(jù)屏幕里 card 上方剩下空間所占比例的值來(lái)重新繪制表盤(pán)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: