予測型背面デザイン

予測型「戻る」は、ジェスチャー ナビゲーション操作の結果です。ユーザーが「戻る」ジェスチャーを完全に完了する前に、スワイプして「戻る」ジェスチャーの先をプレビューします。これにより、ユーザーは続行するか、つまり「戻る」ジェスチャーを「コミット」するか、現在のビューに留まるかを決定できます。

予測型「戻る」は、ジェスチャー ナビゲーションを使用しながら、よりスムーズで直感的なナビゲーション エクスペリエンスを提供します。組み込みのアニメーションを活用して、アクションの移動先をユーザーに通知し、予期しない結果を削減します。

アプリの設計で、カスタム遷移用の「戻る」ナビゲーションと主な出来事のアニメーションが必要な場合は、このページの設計ガイダンスを使用してください。ほとんどのアプリでは、組み込みの予測型「戻る」アニメーションがユーザーの移動先を示すため、カスタムの「戻る」ナビゲーションを実装する必要はありません。

予測型「戻る」のサポート

予測型「戻る」は、デフォルトまたはカスタムの「戻る」ナビゲーションを使用できます。デフォルトの「戻る」ナビゲーションを使用している場合は、簡単にこの機能を有効にできます。詳しくは、予測型「戻る」のサポートの説明をご覧ください。

オプトインすると、ホームに戻る、アクティビティ間、タスク間などのアニメーションがアプリに組み込まれます。

また、マテリアル コンポーネントの依存関係を MDC Android の 1.10.0-alpha02 以降にアップグレードして、次のマテリアル コンポーネント アニメーションを受け取ることもできます。

ジェスチャー ナビゲーション用に設計する

アプリがエッジ ツー エッジに対応していることを確認する

ユーザーをサポートするために、予測型「戻る」ナビゲーションでは、エッジ ツー エッジ機能で定義されたジェスチャー インセットが考慮されます。こうした操作領域にタップ操作を追加したり、ターゲットをドラッグしたりしないでください。

図 1: システム ジェスチャー インセット。これらの領域の下にタップ ターゲットを完全に配置しないでください。

全画面サーフェス

アプリで全画面サーフェス用のカスタムのアプリ内遷移を作成する場合は、この設計ガイダンスを使用してください。

ユーザーが全画面サーフェスで「戻る」ジェスチャーを行うと、「戻る」プレビュー中にサーフェスは画面の端から完全に離れ、ユーザーは直接操作できるようになります。ただし、「戻る」ジェスチャーを行うと「戻る」ジェスチャーの方向でアイテムが閉じられることを、ユーザーに視覚的に示唆してはなりません。

たとえば、詳細画面を閉じて縦向きのリストに戻るときに、全画面表示のサーフェス遷移を使用して、ユーザーが前の操作を元に戻すことを視覚的に示唆できます。動画 1 では、カレンダーの予定が閉じられ、日ビューに戻ります。操作性を向上させるため、ジェスチャー中に発生するばねの張力の一部を吸収するために、わずかにオーバーシュートを加えています。

動画 1.ジェスチャー中に発生するばねの張力を軽減するために、わずかにオーバーシュートを追加する

背面プレビュー

動画 2.「戻る」プレビューの例

予測型アニメーションをユーザーに提示する際、アプリが保持する pre-commit 状態は、ユーザーがエッジ ツー エッジの戻るジェスチャーを行ったが、手を離すことでコミットしていない状態を測定します。この事前コミット状態に適用されるパラメータを指定する必要があります。

表示される動きの量は、操作を開始した位置からユーザーが移動できる距離に基づきます。

モーションの仕様

全画面サーフェスは、操作の開始からの x と y のシフトに直接影響します。このセクションでは、画面上のフィードバックに使用されるメカニズムを規定する仕様と値について説明します。

次の図は、サーフェス アニメーションの推奨モーション仕様を示しています。

図 2: 左端からスワイプした場合のサーフェス シフト、スケール、マージンのパラメータ

1 マージン: 両側の幅の 5%(3 に記載されている表面積に関連)

2 ウィンドウを中央にスケーリングする場合に計算されるシフト。 必要な 8 dp マージンに対して計算する: (((screen width / 20) - 8) dp

3 サーフェスは 90% のサイズにスケーリングされ、残りの 10% をマージンとして利用できます(1 を参照)。

4 画面の端から 8 dp のギャップを設ける

動作の一貫性を保つため、上記のパラメータをそのまま使用することをおすすめしますが、仕様を変更してカスタム アニメーションを作成することもできます。

上の図では、画面の幅は 1,280 であるため、x シフトは 56 dp です。計算式は次のとおりです。

((1280/20)-8)= 56 dp x-shift

図 3: 左端からスワイプする際の Y シフトとスケールのパラメータ。全画面サーフェスに「戻る」プレビューが表示されます。

1 y シフトに利用できるエッジとデバイス マージンの間のスペース

2 サーフェスが画面外にシフトした場合は、サーフェスを 50% 以内に縮小します。

2 サーフェスは垂直方向の中央から開始します。y シフトは次のように定義されます。

  • サーフェスが 8 dp の画面マージンを通過しないように y シフトを制限する
  • サーフェスが突然停止するのを防ぐには、減速インターポレータを使用して y シフトの制限にマッピングします。

3 サーフェスが十分に短くなったら 8 dp のマージンを維持する

カスタム アニメーションでは、次のパラメータをすべて定義する必要があります。

パラメータ

背景情報

X シフト

((画面幅 / 20)- 8)dp

最大シフト量(余白は 8 dp

Y シフト

((使用可能な画面の高さ / 20)-8)dp

最大シフト量(余白は 8 dp

規模

90%

ウィンドウ サイズの最小スケール

Predictive Back Progress API を使用してカスタム アニメーションを実装するデベロッパーは、これらのパラメータを使用します。

ジェスチャーの進行状況を補間する

リニア進行状況の値はユーザーの操作から取得できますが、プレビュー アニメーションに直接使用しないでください。フィードバックは、戻る操作中にユーザーに役立つ内容に調整する必要があります。進行状況の値を STANDARD_DECELERATE トークンまたは PathInterpolator(0f, 0f, 0f, 1f) でフィードし、最初からジェスチャーが明確になるようにします。このフィードバックにより、操作開始時の動きの検出が強化されます。また、減速によってフィードバックが視覚的に快適かつ明確に制御されます。

実践

動画 3.フリングして commit する例

ユーザーがコミット ポイントを超えてジェスチャーを離すと、アクションの完了を確認するアニメーションが表示されます。

ユーザーがすばやくジェスチャーを行うと、通常はフリングと解釈されます。この種の操作は画面上の要素に高速に適用されるため、戻るプレビューのコンテキストでは、コミット アニメーションを実行する前に、サーフェスを最大プレビュー状態に向けて一時的にアニメーション化することで、その速度を吸収します。

フリングの強さによって、commit アニメーションを実行する前にプレビュー アニメーションをどの程度表示するかが決まります。動画 2 に示すように、表示されるアニメーションの種類は、閉じるコンテンツによって異なります。

アクションをキャンセル

動画 4.アクションのキャンセルの例

動画 4 は、しきい値より前にユーザーがボタンを離すとどうなるかを示す例で、アクションがキャンセルされたことを確認するアニメーションが表示されています。全画面サーフェスの場合、ウィンドウは高速で移動し、操作が開始される前の元のエッジ ツー エッジの状態に縮小します。