web-dev-qa-db-ja.com

Android UINavigationControllerのような機能

IPhoneでは、ナビゲーションコントローラーを使用してビューをプッシュおよびポップします。とても便利な。

Androidに同等のものはありますか?

26
Ian Vink

通常、Androidでは、各ビューは独自のアクティビティに表示されます。アクティビティについては、 アプリケーションの基礎 ドキュメントで読むことができます。新しいアクティビティまたはビューに移動するには、 intent を使用します。

まだ読んでいない場合は、これらの入門的なAndroidドキュメントを読むことを強くお勧めします。長すぎず、基本的なプログラム構造をうまく説明しています。

6
Cheryl Simon

これは古い質問ですが、答えは変わったと思います。 iOSのNavスタックをAndroidフラグメントを使用して模倣することが可能になりました。 http://developer.Android.com/reference/Android/app/Fragment.html ==

基本的に、アクティビティからアクティビティにジャンプする代わりに、iOSのNavController/UIViewControllerモデルのように、それぞれが独自の動作を含むフラグメントの表示、編成、およびアニメーションを制御する1つのアクティビティにとどまります。

また、静的ライブラリとして下位互換性があるため、Honeycomb以前のデバイスに実装できます。 ハニカムと下位互換性のための戦略

30
Andrew

Framework(github) を作成して、階層的なナビゲーションパターンを提供し、アニメーションを使用して、毎回新しいアクティビティを起動するのではなく、ナビゲーションの感覚を提供しました。

Android Basic Framework Image

使用方法は次のとおりです。

  • フレームワークをモジュールとしてプロジェクトに追加します
  • プロジェクトに新しいJavaクラスを追加します( "ファイル-新規-Javaクラス")。注:編集中の場合テンプレートを提供するActivity.Javaファイル、そのすべての実装を削除し、空のままにします。
  • NavigationActivityを拡張する
  • すべてのNavigationActivity抽象メソッドを実装します

in Android Studioをクリックすると、Alt +挿入をクリックして実装-メソッドを選択すると、すべての関数定義が自動的に生成されます)。

public class NavigationTest extends NavigationActivity{
    @Override
    public Fragment firstFragment() {
        //return the first fragment that will be shown  

    }

    @Override
    public Boolean showBackButtonInFirstFragment() {
        //show back button already in the first Fragment
        //set to True if this activity is called by another Activity
        //the back button will then pop back to the previous Activity

    }

    @Override
    public Boolean showMasterDetailLayoutInTablets() {
        //set to false if you don't want a master-detail layout in tablets

    }
}

新しいフラグメントの提示

NavigationActivityからpushFragmentメソッドを呼び出すことにより、(素敵なアニメーションで)新しいフラグメントを表示できます。

public void pushFragment(Fragment newFragment, animationType animation, boolean showAsDetailFragmentIfPossible)

newFragment(フラグメント):表示される新しいフラグメント

animation(animationType):アニメーションタイプの列挙型:RIGHT_TO_LEFT、BOTTOM_TO_TOP、FLIP

showAsDetailFragmentIfPossible(boolean):Trueに設定されている場合、ユーザーはタブレットを使用しており、マスター/詳細レイアウトを使用している場合、フラグメントが表示されます。詳細フラグメント(右のパネル)!

GetActivity()メソッドを使用して任意のフラグメントからアクティビティにアクセスできるため、現在表示されているフラグメントから新しいフラグメントを表示できます。たとえば、このコードをボタンクリックリスナー内に配置できます。

NextFragment f = new NextFragment();
NavigationActivity nav =((NavigationActivity)getActivity());
nav.pushFragment(f,NavigationActivity.animationType.RIGHT_TO_LEFT,false);

戻るボタンの動作を実装することを心配する必要はありません。これは、NavigationActivityクラスによって自動的に処理されます。

2018年、Googleは Navigation Architecture Component という新しいライブラリを導入しました。ナビゲーションコンポーネントは、アプリケーションでのナビゲーションの実装を簡素化することになっている新しいアーキテクチャコンポーネントです。最初に、ナビゲーションコンポーネントのスコープが単一のアクティビティであることに言及することが重要です。

enter image description here

詳細はこちら- https://proandroiddev.com/Android-navigation-Arch-component-a-curious-investigation-3e56e24126e1

5
yoAlex5

Android AndroidでUIを表示するには、次の3つの基本タイプがあります。

  • 見る
  • 断片
  • アクティビティ

Google IO 2018導入 ナビゲーションコンポーネント これで作業が楽になります。これは標準メカニズムのラッパーです。

ここでは、ストーリーボードのように見えるNavGraphと目的地への移動に役立つNavControllerを見つけることができます

enter image description here

0
yoAlex5