どろあそび (10)

Android Kotlin の基礎」も最後のレッスン10になりました。レッスン10は文字のサイズや色を一括して指定するスタイルやテーマ、国際化や読み上げなどのアクセス性向上、ナイトモードへの対応を扱います。

最初の項目「Styles and themes」スタイルやテーマを扱います。

アプリで表示される文字の書体、サイズ、各種要素の配色などが一貫したものであることが求められます。

表示要素ごとにこれらを指定していると、これらの一貫性を確保することが難しくなります。

このため、表示要素の属性をまとめたスタイルやテーマを定義して、各表示要素がこれらを参照することで一貫性を実現しようというのがこのレッスンで扱われている内容の一つです。

ところで、Androidにおける表示属性の階層は各表示要素に設定される属性、スタイル、デフォルトスタイル、テーマ、テキストアピアランスの順になっています。

面白いのはこれらのそれぞれがすべての属性を定義するのではなく、テキストアピアランスはテキスト属性のみ、テーマは色とデフォルトフォントのみといったようにそれぞれで定義する属性が指定されていることです (これが強制されているものかは確認できていませんが)。

また、この項目ではダウンロードフォントも扱っています。システムデフォルトのフォント以外のフォントを使用する場合、フォントをアプリに同梱することもできますが、アプリサイズが大きくなるという問題があります。このため、ネットワーク上にあるフォントを必要に応じてダウンロードして使用する仕組みが用意されています。

ただし、日本語のようにサイズの大きいフォントがどのように扱われるか、アプリ起動時のフォントダウンロードで時間がかかることがないか、領域が不足した場合に問題が発生しないかなどは確認できていません。

2番目の項目「Material Design, dimens, and colors」はGoogleが提唱するデザインシステムであるマテリアルデザインとフローティングアクションボタン (FAB)を扱います。

ただし、マテリアルデザインに関してはあまりきちんと説明されていないので、Androidアプリとしての一貫性を確保するには、このチュートリアルだけでなく別途きちんとマテリアルデザインについて学習する必要があると思います。

フローティングアクションボタン (FAB)は最近よく見かける画面上に居座るボタンです。

FABはCoordinatorLayoutというレイヤーを実現するViewGroupを使用し、上層のレイヤーにFloatingActionButton要素を配置することで実現できます。

CoordinatorLayoutは上層に表示要素がなければ下層の表示要素が透過して表示されるとともにユーザーのアクションも下層の表示要素に透過的に通知されるのでユーザーアクションのディスパッチなどの処理は必要ない作りになっています。

この項目ではマテリアルデザインの配色ツールでCOLOR TOOLも扱っています。

COLOR TOOLはPrimary ColorとSecondary Colorの2色を選択するとそれぞれの色の明るい・暗いバリエーション、対応する文字色が自動的に選択され、Android Studioで使用できるファイル形式でエクスポートされます。合わせてアクセシビリティ評価もできるのですが、若干気に入らないところもあるので、マニュアルでの調整も必要そうです。

最後の項目「Design for everyone」はアラビア語など右から左に表記する言語への対応、アクセシビリティの検証、読み上げ対応、チップ (chip)の利用、ナイトモード対応を扱います。

右から左に表記する言語が選択されると文字列が右寄せになるだけでなく、アイコンなどの要素の配置も右寄せに合わせて変更する必要があり、また矢印のように方向性のある画像も左右を入れ替える必要があります。

こういった方向性への対応として表示要素の配置指定にLeft/RightとStart/Endの2種が用意されています。Left/Rightは固定的に左右配置を行うのに対して、Start/Endは文字列の表記方向に合わせて配置が変更されます。これらを設定した結果は言語指定にかかわらず表記方向を変更する指示ができるので、とりあえずの確認はできるようになっています。

Accessibility Scanner (日本語版では「ユーザー補助検証ツール」) はデバイスにインストールするツールで、検証を有効にするとアプリ動作をチェックしてアクセシビリティに関する問題がないかを検査します。

手元の環境 (Mac版エミュレーター) ではこのアプリを入れるとエミュレーターがまともに動かなくなったので、スマートフォンにインストールして動作を確認しました。多少きわどい動作をするツールなので、環境を選ぶところがあるのかもしれません。

読み上げへの対応は、まず画像やシンボルイメージ、アイコンなどに読み上げ用の説明を付け、入力項目には入力する内容を伝えるヒントを付けることが必要です。

また、複数の項目をLinearLayoutなどのViewGroupを使用してまとめることも読み上げの観点で有用とのことですが、実際の効果はこのレッスンからはいまいちわかりませんでした。

チップ (Chip) は横1列に並んだ長円形のチェックマーク付きボタンで、タブのように絞り込みで使用できる項目となっています。

この項目ではデータベース項目からチップを自動生成する手順も扱っているので、標準手順として使えるレッスンになっていると思います。

最後はナイトモードです。ナイトモードは夜間など暗いところで使用する際に画面全体を暗い色で構成して目が疲れにくくしようというもので、Androidシステムに基本的な対応は含まれているので、開発者はナイトモード用のスタイルを定義して、アプリ起動時にナイトモードに対応するよう設定を行うだけで対応可能となります。

以上、10のレッスンを通して基本的なAndroidアプリの開発手順は大体わかった気がしました。

とはいえ、Kotlinの文法に関して怪しいところがあり、十分理解できているとは言えないのも事実です。

ということで、この先はKotlinを少し調べていこうかと思います。


bewise.jp

Be Wise: 賢くなろうということ

0コメント

  • 1000 / 1000