Android UINavigationController之类的功能

Ian*_*ink 26 android uinavigationcontroller

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

在Android中是否有同等效力?

And*_*rew 32

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

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

它也作为静态库向后兼容,因此您可以在Honeycomb之前的设备上实现它. 蜂窝和向后兼容的策略

  • 看[Fragment back stack](http://developer.android.com/reference/android/app/Fragment.html#BackStack) (2认同)

Che*_*mon 6

通常在android中,每个视图都显示在自己的Activity中.您可以在应用程序基础文档中阅读有关活动的信息.要移动到新的活动或视图,您可以使用意图.

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


Eri*_*hin 5

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

Android Basic Framework图片

以下是如何使用它:

  • 将框架作为模块添加到项目中
  • 在项目中添加一个新的Java类("File - New - Java Class"). 注意:如果您正在编辑为您提供模板的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

    }
}
Run Code Online (Sandbox Code Playgroud)

提出一个新的片段

您可以通过从NavigationActivity 调用pushFragment方法来呈现新片段(带有漂亮的动画).

public void pushFragment(Fragment newFragment, animationType animation, boolean showAsDetailFragmentIfPossible)
Run Code Online (Sandbox Code Playgroud)

newFragment(Fragment):将呈现的新片段

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

showAsDetailFragmentIfPossible(boolean):如果设置为True,则用户在Tablet中,并且您正在使用主 - 细节布局,片段将显示在细节片段(右侧的面板)中!

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

NextFragment f = new NextFragment();
NavigationActivity nav =((NavigationActivity)getActivity());
nav.pushFragment(f,NavigationActivity.animationType.RIGHT_TO_LEFT,false);
Run Code Online (Sandbox Code Playgroud)

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