Material Designメモ - App bars: top

f:id:turu26:20190824183842p:plain
App bars: top - Material Designより

参考

App bars: top - Material Design

概要

現在のスクリーンに関連する情報やアクションを表示する

使い方

現在のスクリーンに関連する情報やアクションを表示する。 以下に使用される

  • ブランディング
  • 画面タイトル
  • ナビゲーション
  • アクション

指針

  • Persistent
    • Top app barsはそれぞれの画面のトップに表示され、スクロールによって非表示になる
  • Guiding
    • アプリを通じてユーザーをガイドするための方法を提供する
  • Conisstent
    • 一貫性のある位置とコンテンツがあり、親しみやすくなる

スタイル

  • Regular
  • Contextual action bar
    • 選択したアイテムへのアクションを提供する
    • アクションが実行されるか却下されるまでアクティブのままでいる

f:id:turu26:20190824182853p:plain
Contextual action bar - Material Designより

構成

構成要素

  1. Container
  2. Navigation icon (optional)
  3. Title (optional)
  4. Action items (optional)
  5. Overflow menu (optional)

左→右への言語の推奨配置

  • (左端)ナビゲーション
  • タイトル
  • アクション(Optional)
  • Overflow menu(Optional)

Bar

Barは様々な高さが利用可能である

  • Regular
  • Prominent
  • Dense (desktop only)
  • Prominent dense (desktop only)

Prominent

ProminentTop app barsは以下の用途で利用される - 長いタイトル - 画像の格納 - Top app barsの存在感を高める

Dence

Top app barsはより密集したレイアウトに対応するために凝縮される場合がある

f:id:turu26:20190824182923p:plain
RegularとDenceの違い - Material Designより

Prominent dense

ProminentとDenseを合わせた感じ

Images in bars

Barは画像を内包することが可能。Prominentは画像を使用することを推奨されている Top app barsのテキストとアイコンが判別できるような画像を配置する必要がある

Navigation icon

Navigation iconはOptionalで左側に配置される。

以下のいずれかの形式を使用できる - メニューアイコン: navigation drawerを開く - 上矢印: アプリの回想をナビゲートする - 戻る: 前のスクリーンに戻る

Title

以下を説明する - ユーザーの現在いる画面 - ユーザーが現在選択しているもの - 使用されてるアプリ

注意点

  • Top app barsのスタイルがregularの場合は改行してはいけない
  • Top app barsのスタイルがregularの場合は文字列を省略してもいけない
  • Top app barsのスタイルがregularの場合は文字列を小さくしてもいけない

要はProminent使えやってことか

Action items and overflow menu

  • 最も使うアクションを左側に配置
  • Overflow Menuは一番右に配置する

振る舞い

Scrolling

  • 上スクロールでTop app barsが非表示になる
  • 下スクロールでTop app barsが表示される
  • Top app barsは他のコンテンツよりも標高が高く表示される
  • 下スクロールによってTop app barsを非表示にしないことも可能。その場合はTop app barsのelevationがコンテンツより上になる
  • Prominentの場合はスクロールによってTop app barsがprominentからregularに変化する

Nesting actions

  • 画面サイズを変更するとTop app barsのサイズが変更され、アクションはOverflow Menuに統合される
  • アクションは右のものからOverflow Menuに統合されていく
    • 優先度が高いものは左に配置しておけば消えにくくなる

Contextual action bar

使い方

Top app barsは選択されたアイテムにアクションを提供するContextual action barに変換できる

ユーザーがギャラリーから写真を選択するとTop app barsは選択した写真に関連するアクションを含むContextual action barに変わる

Top app bars → Contextual action barでの変化

  • Barの色が変わる
  • ナビゲーションアイコンがcloseに変わる
  • BarのTitleが変わる
  • BarのActionが変わる

構成要素

  1. Close button (ナビゲーションアイコンの代わり)
  2. Contextual title
  3. Contextual actions
  4. Overflow menu (optional)

UIKitとの比較

  • AppbarとNavigationbarってネーミングのコンテキストが異なる感じが面白い。
  • ProminentはiOSでいうLarge title的なやつなのかな

所感

  • Contextual action barみたいなモードに即したComponentがあるのは便利
    • 同じことをiOSで実装するのは面倒
  • 読んでいるとApp bars bottomよりも優先してその画面に対するアクションを配置してほしそうに感じた。要素が多くてもoverflow menuとかもあるし。

Material Designメモ - App bars: bottom

f:id:turu26:20190824171744p:plain
App bars: bottom - Material Designより

参考

App bars: bottom - Material Design

概要

モバイルのスクリーン上でのボトムにて、ナビゲーションやキーアクションを表示する

使い方

bottom navigation drawerとFABを含む最大4つのアクションへのアクセスを提供する

指針

  • Actionable
    • 重要な画面アクションを強調表示し、FABの認識を高める
  • Flexible
    • bottom app barのレイアウトやアクションはスクリーンの要求に基づいて変わる
  • Ergonomic
    • bottom app barはモバイルデバイス上での片手で操作できる位置に簡単にリーリ可能である

いつ使うか

  • こんな時に使うべき
    • モバイルデバイスのみの場合
    • bottom navigation drawerにアクセスする場合
    • FABを除いて2~5つのアクションを表示する場合
  • こんな時は使用を控えるべき
    • すでにbottom navigation barがある場合
    • 表示するアクション数が1以下の場合(FABを除く)

構成

  1. Container
  2. Navigation drawer control
  3. Floating action button (FAB)
  4. Action icon
  5. Overflow menu control

位置関係

3種類のスタイルがある。FABの位置や表示の有無で変わる。

Centered FAB

FABが中央に配置されたスタイル ナビゲーションメニューコントロールとFABなどの目立つアクションを備えたホーム画面で使用する。 1~2個のアクションをメニューコントロールの反対に配置可能

End FAB

FABが右側に配置されたスタイル FABと3~4つのアクションを配置する

No FAB

FABが不要な時に用いる。 ナビゲーションメニューと、その反対側に最大4つのアクションを配置できる

Floating Action Button

bottom app barのFABの表示方法は以下の2つの方法のいずれか

  • Overlap: 下部のアプリバーより高い位置にあり、バーの形状には影響しない
  • Inset: 下部のアプリバーと同じ高さにあり、バーの形状が変化する

注意点

FABにリーチしにくくなるため、FABがバーの外側に配置されていてはいけない

振る舞い

Layout

bottom app barのレイアウトとアクションは各画面に合わせて変更できる

画面のコンテンツなさい的なものに応じて、画面に表示されるアクション数を増減できる

Scrolling

スクロールするとbottom app barの表示/非表示が起きる。

下スクロール:

  • bottom app barが非表示になる
  • FABが存在する場合はFABがバーから切り離されて画面に残る

上スクロール

  • bottom app barが再表示される
  • FABが存在する場合は再接続される

Elevation

  • bottom app barの標高は8dp
  • FAB表示時はbottom app barの上に表示する

それぞれの構成要素の高さ

  1. Content (0dp)
  2. Snackbar (6dp)
  3. Bottom app bar (8dp)
  4. Floating action button (12dp resting)
  5. Bottom navigation drawer (16dp)

Placement

Navigation

bottom app barはナビゲーションメニューアイコンを表示できるのだが、用途はbottom navigation drawerを表示する場合のみでナビゲーションアクション自体は含まれない (ナビゲーションさせたい場合はtop app barにボタンを配置する必要がある)

top app barとの共用

bottom app bartop app barの共用は可能。アプリ全体でアクションをどちらに配置するかを一貫して整理する必要がある

一貫していれば、特に細かいルールはなさそう

dev.turu.tokyo

配置例

  • 検索などのアクションをアプリ全体の一貫した場所に配置する
  • top app bar削除などの破壊的アクションを配置する
  • 画面ごとのアクションをtop app barに、アプリ固有のアクションをbottom app barに設定する

Snackbars

dev.turu.tokyo

Snackbarbottom app barとFABに重ならないように表示する

UIKitとの比較

  • UIKitでいうToolbarの役割なのかなと思った。
  • Tabbarと混同しないようにしないと

所感

  • Toolbar的な用途以外はあまり用途が想像できない。
    • MenuとActionを同じComponent上で分けて表示するのってリテラシー高くないと難しそうだから多用したくないという印象(パクった結果意図から外れてしまうみたいなことが起きそう)
  • メニューアイコンもいろいろあって混乱する...

Material Designメモ - Progress indicators

f:id:turu26:20190815025530g:plain
Progress indecators - Material Designより

今回はProgress indicatorsについてです。 一見iOS(UIKit)と同じなんだろなとか思いつつ見ていきます。

参考

Progress indicators - Material Design

概要

指定されていない待機時間や、現在実行中のプロセスの長さを表示する

使い方

  • 現在実行中のプロセスのステータスをユーザーに知らせる
    • アプリ内でのローディング
    • フォームの送信
    • 保存処理
  • 一連のプロセスの進行状況を表示する場合は、各アクティビティの進行状況ではなく全体的な進行状況を表示する

方針

  • 有益であること
    • プロセスのステータスを反映した表示を行う
    • それらは装飾的ではない
  • アニメーションされている
    • アニメーションを使用して注意を引くことで、ユーザーにアクティビティの進行状況を伝える
  • 一貫していること

形状

  • Linear
  • circular

Linear

  • Determinate indicators
    • プロセスがどのくらい時間がかかるかを示す
    • プロセスの進捗が測れる場合に用いる
  • Indeterminate indicators
    • どのくらい時間がかかるかわからない(わからなくてもいい)場合に用いる

プロセスがどのくらい時間がかかるかわからない状態からわかる状態に変わった時はDeterminate indicatorsIndeterminate indicatorsに変わっても良い

構成

  1. Track
    • プロセス全体を表す部分(幅は固定)
  2. Indicator
    • プロセスの進捗がアニメーションされる部分

配置

  • 画面の中央にある場合は、すべての画面コンテンツのロードを示す
  • CardなどのContainerにある場合は、プロセスがその特定のアイテムに適用されることを示す(そして、UIの他の部分との相互作用が可能)
  • アイテムを展開すると、展開するエッジに沿ってLinear Indicatorを配置して、新しいコンテンツが表示される場所にユーザーの注意を引くことができる

f:id:turu26:20190815025829g:plain
Placement / Progress indicators - Material Designより

circular

  • Determinate
    • プロセスの進捗が測れる場合に用いる
  • Indeterminate
    • どのくらい時間がかかるかわからない(わからなくてもいい)場合に用いる

配置

  • 中央に置く場合
    • コンテンツの初期ロードを示す
  • 既存のコンテンツの上または下に置くと、新しいコンテンツが表示される場所に注意を引く動きになる

アクションとの統合

circular indicatorはボタンまたはアクション可能なアイコンに統合して、インタラクションと特定のアイテムの間の接続を表現できる。 通常、ボタンをもう一度クリックするなどの操作が利用できない場合に表現するために使用される。

短時間の不確定なアクティビティ(2〜5秒)に使用する必要があり、長時間のアクティビティでは、Snackbarnotificationなど、別の通信方法が必要になる場合がある。

dev.turu.tokyo

注意点

  • Indicatorがユーザーのタスクを不必要に中断させないようにすること

UIKitとの比較

  • circular indicatorのDeterminateなパターンはiOSにはない感じ
  • UIKitだと中央に置く場合は割とProgressHUDなものを置くかCustomViewをわざわざ作るのだけど、Material Designだとちゃんとコンポーネントが用意されている感じでよき

所感

なし

Material Designメモ - Banners

f:id:turu26:20190812122622p:plain
Banners - Material Designより

前回のSnackbarからBannerってやつが気になっていたのでみていく。 blog.turu.tokyo

参考

Banners - Material Design

概要

メッセージとメッセージに関連する任意のアクションを表示する

使い方

Bannerは画面の上部または、上部のapp barの下に表示する必要がある これらは永続的に非モーダルであり、ユーザーは無視しても応答してもいい

優先度

  • Snackbarよりは高い優先度中
  • Bannerはユーザーによって明示的に閉じるか、Bannerを表示する原因が解決されれば閉じる
  • Snackbarは一時的な表示だったのが、Bannerは永続的に表示されるという感じ

指針

  • 適切に中断させること
    • Bannerの情報と画面の表示のコンテキストが一致していること
  • 明瞭さ
    • Bannerは簡潔なメッセージでユーザーがBannerを操作するとどうなるかを伝える
  • 集中させる

構成

  1. Supporting illustration(任意)
    • アイコンやサムネイルなど
  2. ViewのContainer
  3. Text
  4. Buttons

Banner container

  • 幅100%いっぱいの矩形が用いられる
  • 一貫してよく見える場所に配置する
  • 1つだけ表示すること

Banner message

  • Bannerは、アプリ内メッセージング全体の戦略の一部として検討する必要がある
  • メッセージにリンクを入れないこと
    • 応答はボタンにやらせる

Buttons

  • ボタンはメッセージに直接的に関連する必要がある
  • Bannerのアクションを明確に表す必要がある
  • ボタンにはアイコンではなく、TextでLabelをつける
    • Bannerは最低限の中断を意図されて作られているのでボタンに装飾を入れないこと
  • Bannerには最大2つのテキストボタンを含めることができる
  • 左側に却下、右側に確認アクションを配置すること
  • ボタンは置かない

Supporting illustration

  • Supporting illustrationだけあってメッセージがないのはNG

配置

  • app barの下に配置される
  • モバイルではコンテンツと同じ高度
    • コンテンツとともに画面外にスクロールされる
  • デスクトップでは画面上部のアプリバーと同じ高さに固定される
  • 永続的なSearch barがある場合
    • バナーはSearch barの下に配置される
  • bottom navigationの場合

    • スクリーンのトップに残り続ける
      f:id:turu26:20190812122702p:plain
      Banners and persistent search / Banners - Material Designより
  • パン可能なコンテンツ(Mapなど)の画面

    • スクリーンのトップに残り続ける

iOSとの比較

  • こういうものはカスタムで実装するけど標準でなのすごいな
  • 明確にボタンの右はこう、左はこうって言ってるの珍しい気がする

所感

  • Snackbarとは表示が一時的かそうじゃないかの違いってだけで佇まい的には似たような感じなのかなと思った。

Material Designメモ - Snackbars

f:id:turu26:20190811223926p:plain
Snackbars - Material Designより

前回、前々回と重要めなComponentをやったので息抜きがてらiOSで見たことないやつを見てみます。

参考

Snackbars - Material Design

概要

Snackbarはスクリーンのボトムにアプリのプロセス(現在の状態)についてを表示するComponent

用途

  • アプリのプロセスをユーザーに伝える
    • 動作結果
    • これから何か動作する時
  • 1度に表示できるsnackbarは1つだけ
  • スナックバーには一つアクションを含めることができる
    • DismissCancel

指針

  • アップデートされたアプリのプロセス情報を表示する
  • 一時的に表示される(そして勝手に消える)
  • 画面上の最も適切な位置に配置すること

いつ使うか

  • 優先度低い
    • 優先度が高い場合は、BannerやDialogを用いる

構成

  • Text label
  • Container
  • Action(Optional)

諸注意

Text label

  • 適切な量の文章を書くこと
  • アイコンを入れてはいけない
    • その場合はアラートの使用を考慮すること

Container

  • 背景を透かさないこと
  • Containerの形状を変えないこと
  • elevation(高度)を無しにしてはいけない

Action

  • textと同じ色にしてはいけない
  • 背景色を描画するのは余計
  • Actionが長い時は必ずしも横並びにしなくても良い
  • UNDOを入れることはOK
  • Snackbarは勝手に消えるので、あえてDISMISSを入れる必要はない

その他

  • Snackbar表示時にFABなどの他のComponentを動かしてはいけない
  • Navigation Componentsの上に配置してはいけない
  • FABの上にもおいてはいけない

iOSとの比較

  • SnackbarはiOSにはない

所感

  • Snackbarみたいな一時的なものが、他の優先度が高いComponentを邪魔してはいけないというように察した
  • アホみたいなNG集がたくさんあった