Garmin アプリ開発(4) 画面レイアウトとデザインを考える

apps.garmin.com

 プログラムのサンプルの理解ができてきたので、画面レイアウトを考えていきます。

要素

今回画面に必要な要素は

・ストップウォッチ2個

アディショナルタイム

なので1画面にレイアウトできそうです。

 

Reference Guides にあるように、3field layoutでレイアウトするのが良さそうです。

f:id:mnobori:20211228114230p:plain

3 field layout

色使い

ただしデフォルトの3 layer layoutそのままだと、白黒の寂しい画面になるので色を使ってデザインしようと思います。

 

ではこの機種forerunner 55(forathlete 55)はどんな描画ができるか、同じくReference Guides で調べます。

Screen Shape    round
Screen Size    208 x 208
Display Colors    8

丸くて、208x208ドットで、なんと 8色 でした! (買う前に見たカタログに書いて無いよ!)

デジタル8色とは....  1980年代パソコンみたいなデザインが必要ですね!

f:id:mnobori:20211228115411p:plain

8bit color palette

8色(3bit)カラーいろいろ

左が元画像、右は8色カラー化した画像。フルカラーの8色化はざらざら(誤差拡散)かのっぺり(誤差拡散なし)になってしまいます。
これだとフルカラーの高級時計などをモチーフにしたデザインは難しそうです

f:id:mnobori:20211228115113p:plain

レダさん 縦横208pixel

2020年代のデザインは単色アイコンも流行ってますし、プロのデザイナーなら8色でもかっこよく作るんでしょう

f:id:mnobori:20211228115731p:plain

単色icons

80年代ゲームの色使いでプログラミング+デザインで感心するのはザナドゥの色使い

f:id:mnobori:20211228134352p:plain
f:id:mnobori:20211228133624p:plain
Xanadu

動くキャラは2bit(白、黒、赤、透明)、背景はなんと1ビット(黄/青)の、3bit(8色を5色に減色)カラーで、これだけのデザインを実現してます!
重ね合わせ処理を省略して高速な描画を実現するため、減色覚悟で2bit / 1bit使い分け。
制約がありながらのデザイン力が素晴らしく背景1bitなのに、神殿、通過可能、乗れるブロックなどが一目で判別できます。

 

f:id:mnobori:20211228120518p:plain

明朝体

こういうデザインも8 colorで出来ますね。こういう色使いで行きます

 

画像リソース作成

お好きなビットマップエディタ(GIMP - GNU Image Manipulation Programなど)で、pngファイルを作成します。

f:id:mnobori:20211228132147p:plain
f:id:mnobori:20211228132505p:plain
画面リソース

背景画像や、アイコンを作ります。

レイアウト指定

https://developer.garmin.com/connect-iq/core-topics/layouts/

このリファレンスマニュアルを参考に、レイアウトをxmlファイルで指定します。

<layout id="MainLayout">
    <bitmap id="background" x="center" y="center" filename="../../resources-round-240x240/images/timers11_240x240.png" />
    <label id="StopWatchMS" x="210" y="21" font="Graphics.FONT_NUMBER_THAI_HOT" justification="Graphics.TEXT_JUSTIFY_RIGHT" color="Graphics.COLOR_WHITE" />
    <label id="StopWatchCenti" x="186" y="95" font="Graphics.FONT_NUMBER_MILD" justification="Graphics.TEXT_JUSTIFY_LEFT" color="Graphics.COLOR_WHITE" />
    <label id="FreeRun" x="210" y="116" font="Graphics.FONT_NUMBER_THAI_HOT" justification="Graphics.TEXT_JUSTIFY_RIGHT" color="Graphics.COLOR_WHITE" />
    <label id="AdditionalTime" x="68" y="95" font="Graphics.FONT_NUMBER_MILD" justification="Graphics.TEXT_JUSTIFY_LEFT" color="Graphics.COLOR_YELLOW" />
    <bitmap id="back" x="148" y="199" filename="../../resources-round-240x240/images/exit_240x240.png"/>
    <bitmap id="up"  x="5" y="106" filename="../../resources-round-240x240/images/setup_240x240.png"/>
</layout>

bitmap要素で背景やアイコン、label要素でストップウォッチなどの文字列の座標とフォントサイズ、配置、色を指定します。

 

サンプルプログラムにこれらのリソースを上書きして、↓のようなコードで label に文字列をセットすると、UIが大体できます。

_DrawableStopWatchMS = View.findDrawableById("StopWatchMS");
_DrawableStopWatchMS.setText(”88:88");

 

文字列はみ出さないように、サイズや座標を微調整してレイアウトの完成です

f:id:mnobori:20211228140750p:plain

リソーステスト

まだ全く動きませんが、UIのガワができると続きを作るやる気が出てきます