8

このトピックに関していくつか質問がありますが(例:https ://github.com/jfeinstein10/SlidingMenu/issues/5 )、まだ不明です。誰かがこれを明確にできることを願っています。

コンテクスト:

https://github.com/jfeinstein10/SlidingMenuを参照してください

アクティビティとフラグメントごとに画面を整理するAndroidアプリがあります(つまり、各画面は1つ以上のフラグメントを含むアクティビティです)。新しい要件は、スライドメニューを追加することです(このライブラリが提供するものと同様です)。

問題:

例と説明から、適切なモデルは、異なる画面に属するフラグメントを切り替えて切り替えるメインアクティビティを1つだけ持つことであるように見えます。実際、作成者は上記のスレッドで次のように述べています。「リストの選択に基づいてアクティビティを起動した場合、話しているビューを入れ替える動作はありません。」および「できません。上記のビューにアクティビティを配置します。アクティビティとは何かを考えると、それはあまり意味がありません。」

なぜそれは意味がないのですか?明らかに、私はここでポイントを逃しています。

質問:

プロジェクトにすでに複数のアクティビティ(各画面に対応するアクティビティ)が含まれている場合、このライブラリを使用するために、プロジェクトを再編成してメインアクティビティを1つだけにする唯一のオプションはありますか?または、スライドメニューのリストアイテムがクリックされたときに新しいアクティビティを起動し、スライドメニューの動作を観察する方法はありますか?[編集-最後の部分をより明確にするために追加]、つまり、私の既存のアプリデザイン内でこのライブラリを使用するために正確に。

前もって感謝します

4

3 に答える 3

4

まず、内部を別のものにすることはできず、ドキュメントActivityに記載されているように、アクティビティはビューとは完全に異なります。

アクティビティは、ユーザーが実行できる単一の焦点を絞ったものです。

さて、あなたの質問に答えるために、それはあなたがあなたのアプリをどのように振る舞わせたいかによります。スライドメニューを使用してアクティビティを実装し、onClosedListenerそこから選択したアクティビティに切り替えることができます。これにより、アクティビティを切り替える前にメニューを閉じるアニメーションが表示されます。また、メニューから何かを選択するたびに、新しいアクティビティのアニメーションが前面に表示されるため、奇妙な効果が得られます。

最善のアプローチは、すべてのスライドメニューオプションの間に「共通の目的」を持たせることだと思います。たとえば、私のプロジェクトの1つでは、ユーザーがさまざまな種類のデータのリストから選択できるようにする必要があります。ユーザーがメニューから何かを選択すると、新しいリストフラグメントが右隅に読み込まれ、表示または編集するアイテムを選択できます。これがアプリのエントリポイントであり、アプリにスライドメニューがある唯一の場所でもあります。これは、このUIデザインパターンを実装するすべてのアプリでほぼ同じです。サイドメニューで表示するフィードやコンテンツを選択できるgoogle+、currents、youtubeを見てください。ユーザーが選択したら、選択したアイテムの新しいアクティビティ(g +投稿、ビデオ、ニュース記事、ツイートなど)を開くだけです。

スライドメニューを使用するために、アプリにさまざまなデータのリストなどを含める必要はありませんが、スライドメニューを使用するアクティビティには、その機能と目的に関して明確で焦点を絞った目標が必要であることに注意してください。他の多くのアプリにスライドメニューがあるのは悪い選択なので、特定の目的で使用する必要があります。また、スライドメニューをどこにでも適用すると、プラットフォームのナビゲーションパターンが妨げられ、他のアプリと同じように動作しないため、全体的にユーザーエクスペリエンスが低下することにも注意してください。

于 2013-03-13T19:16:49.350 に答える
2

アクティビティは各画面のビューのメインコントローラであるため、上記のビューにアクティビティを配置することは意味がありません。アクティビティはビューも表示し、フラグメントを追跡します(フラグメントは、独自のビューがある場合とない場合のミニコントローラーです)。したがって、上記のビューにアクティビティを配置するということは、アクティビティをアクティビティに配置することを意味します...ウィッチは不可能です。

あなたのテキストから導き出せることから、アクティビティとフラグメントに関するAndroid開発者ガイド(http://developer.android.com/guide/components/activities.html)をもう一度読んで理解を深めることが賢明だと思います。 Androidの概念がどのように機能するかについて。

今あなたの質問に:

何を達成しようとしているのかはわかりませんが、メニューをGoogle+アプリのように動作させたい場合は、Activityクラス(またはこれまでにないもの)を拡張する基本クラスを実装する方法があります。プロジェクトで使用されるベースアクティビティ)、ベースにSlidingMenuを設定させます。次に、メニューがあるはずの各アクティビティで基本アクティビティを単純に拡張します。

説明した方法でそれを行うこともできますが、そうすると、神オブジェクトの古典的な例になります(http://en.wikipedia.org/wiki/God_object)。これは、フラグメントジャグリングスキルを練習するための優れた方法であり、新しいアクティビティを開始する代わりにフラグメントを切り替えることにはユースケースがありますが、ビューが少ないプロジェクトにはお勧めしません。

于 2013-03-14T04:32:28.210 に答える
1

これが私が抱えていた問題に最も近い答えです-http ://www.verious.com/article/polishing-the-sliding-app-menu/。ページの一番下までスクロールして、「アクティビティ間でのフライインアプリメニューの使用」というタイトルの最後のセクションを表示します。これは、既存のアプリに多くのアクティビティがあり、大規模なリファクタリングを避けたい場合の1つのオプションです。私はまだこれを試していませんが、知っておく価値があります。

于 2013-03-18T20:34:36.530 に答える