TL; DR: Spotify iPadアプリに似た深いナビゲーションを備えたマルチペインアプリはAndroidでどのように表示され、機能する必要がありますか?また、これを実装する方法は?
ロングバージョン:
ユーザーがアイテムのリストを表示し、これらのアイテムをさらに深く掘り下げることができるアプリに取り組んでいます。これらのアイテム詳細ページは、関連アイテムのリストを再び開くことができ、そのリストには詳細ページなどがあります。電話アプリとして、これらは次のように見え、相互にリンクする可能性のある個別のアクティビティになります。
モックアップでは、ユーザーは最初の概要を確認し、最初のリストから「アイテム#2」を選択します。新しいアクティビティが開き、アイテム#2の詳細が表示されます。ここで、彼はアイテム#2に関連するもののリストを表示することを選択します。3番目の図の新しくオープンエンドのアクティビティはこのリストを示しており、1つをクリックするとこのリストの詳細が開きます。彼は好きなだけコンテンツに深く入り込むことができます。
これは、通常のAndroidアクティビティで非常にうまく機能します。私はアプリをタブレットに導入することに取り組んでおり、これを最適に実装する方法を考えています。計画は、同じコンセプトでマルチペインレイアウトを作成することです。これは、iPad Spotifyアプリの動作と非常によく似ています(タブレット固有のレイアウトを作成した後、Androidにこれをどのようにもたらすかを見るのは興味深いでしょう)。
タブレットレイアウトでは、アイテムまたはリスト名をクリックするたびに、対応する子アイテムが右からアニメーション化される新しいペインとして開きます。上記の例と同じワークフローは次のようになります。
このナビゲーションパターンを最適に実装する方法がわかりません。Gmailのようにナビゲーションの深さが制限されているマルチペインアプリは、すべてのフラグメントを含む静的なViewGroup(LinearLayoutで問題ありません)を使用して構築できます。ナビゲーションを深く掘り下げると、右側の次のコンテナーのコンテンツが置き換えられ、これにアニメーション化されます(を参照)。SOでのこれのCommonWares実装)。
これは、カスタムViewGroupが進むべき道であることを示唆しています。サブページ(つまり、「リスト」)を表示する必要がある場合は、フラグメントを含む画面の半分の幅の新しい子をViewGroupに作成し、表示されている領域をスクロールして、操作したばかりのペインを表示します。と新しい子が表示されます。これをFragmentTransactionに正しくリンクして、バックスタックが正しく機能するようにするには、次のようになります。
View newPane = container.addChild();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(newPane, new ListOfThingsFragment(2));
ft.remove(paneOnRight, fragmentOnRight);
ft.commit();
container.animateToRight();
FragmentTransaction内でアニメーションを実行する方法がわかりません。
フィードバックを歓迎します。私の雇用主は、私たちが開発するオープンソーシングフレームワークに関して一般的に好意的です。したがって、これがより幅広い関心事であり、再利用可能なソリューションを思い付くことができれば、それを共有できれば幸いです。