Android UINavigationController之类的功能

时间:2010-07-15 01:47:42

标签: android uinavigationcontroller

在iPhone上,我使用导航控制器来推送和弹出视图。非常方便。

Android中是否有同等效果?

5 个答案:

答案 0 :(得分:30)

这是一个老问题,但我相信答案已经改变了。现在可以使用Fragments在Android中模拟iOS中的Nav堆栈。 http://developer.android.com/reference/android/app/Fragment.html

基本上不是从Activity跳转到Activity而是保留在一个Activity中,该Activity控制Fragments的显示,组织和动画,每个Frag都包含自己的行为,就像iOS中的NavController / UIViewController模型一样。

它也作为静态库向后兼容,因此您可以在Honeycomb之前的设备上实现它。 Strategies for Honeycomb & backward compatibility

答案 1 :(得分:6)

通常在android中,每个视图都显示在自己的Activity中。您可以在application fundamentals文档中阅读有关活动的信息。要移至新的活动或视图,请使用intent

如果你还没有这样做,我强烈建议你阅读那些介绍性的android文档。它们不会太长,并且很好地解释了基本的程序结构。

答案 2 :(得分:5)

我制作了一个Framework (github)来提供分层导航模式,动画可以提供导航感,而不是每次都启动新的活动。

Android Basic Framework Image

以下是如何使用它:

  • 将框架作为模块添加到项目中
  • 在项目中添加一个新的Java类("文件 - 新建 - Java类")。 注意:如果您正在编辑为您提供模板的Activity.java文件,请删除其所有实现并将其留空。
  • 使其扩展NavigationActivity
  • 实现所有NavigationActivity抽象方法

在Android Studio中,如果单击Alt + insert并选择实现 - 方法将自动生成所有函数定义)。

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 (片段):将展示的新片段

动画(animationType):动画类型枚举:RIGHT_TO_LEFT,BOTTOM_TO_TOP,FLIP

showAsDetailFragmentIfPossible (布尔值):如果设置为True,则用户在平板电脑中,并且您正在使用主 - 细节布局,片段将显示在细节片段中(面板中)右边)!

由于您可以使用getActivity()方法从任何片段访问活动,可以从当前显示的片段中显示新的片段。 例如,您可以将此代码放在按钮单击侦听器中:

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

您不必担心实施后退按钮行为。这由NavigationActivity类自动处理。

答案 3 :(得分:5)

Google在2018年推出了一个名为Navigation Architecture Component的新库。 导航组件是一个新的体系结构组件,旨在简化应用程序中导航的实现。首先,必须提到“导航”组件的作用域仅限于一个活动。

enter image description here

在此处了解更多-https://proandroiddev.com/android-navigation-arch-component-a-curious-investigation-3e56e24126e1

答案 4 :(得分:0)

Android中有一些基本类型可以在Android中显示UI:

  • 查看
  • 片段
  • 活动

Google IO 2018引入了Navigation component,这应该使生活更轻松。它是标准机制下的包装器。

在这里您可以找到看起来像故事板的NavGraph和有助于导航到目的地的NavController

enter image description here