android 侧滑回退 导航 模仿iOS的NavigationController

来源:互联网 发布:淘宝店怎么医疗器械 编辑:程序博客网 时间:2024/05/16 17:12

用过iOS都知道iOS大多app都可以划动界面回退到一下页面,这个是iOS官方提供的一个叫NavigationController的功能。想实现一个一样的,找github,没找到合适了。自己写一个分享出来吧。
实现原理很简单,就是使用fragment和activty。如果你也是使用fragment来管理你的页面可以试试。

1:添加gradle

repositories {    jcenter()}compile 'com.lurenshuo.android:navigation-controller:1.0.6'

2:如果使用Toolbar,需要使用NavigationToolbar。不使用请忽略

<com.lurenshuo.android.navigationcontroller.widget.NavigationToolbar    android:id="@+id/toolbar"    android:layout_width="match_parent"    android:layout_height="50dp"/>

Toolbar可选属性

<attr name="title_view_text_size" format="float"/><attr name="back_view_text_size" format="float"/><attr name="title_view_text_color" format="color"/><attr name="back_view_text_color" format="color"/><attr name="title_view_text" format="string"/><attr name="back_view_text" format="string"/>

可以在fragment中给你的toolbar添加一个title

setToolbarTitle("FragmentA");

3:让你的activity继承NavigationActivity或NavigationActivityV4
区别就是你是不是使用的v4包的fragment
如果使用toolbar就在initNavigationToolbar返回你的toolbar,没有使用就return null;

@Overrideprotected NavigationToolbar initNavigationToolbar() {   NavigationToolbar toolbar = (NavigationToolbar) findViewById(R.id.toolbar);   setSupportActionBar(toolbar);   return toolbar;}

添加fragment时要addToBackStack(null)
例如:添加主fragment:

getFragmentManager()      .beginTransaction()      .add(R.id.frameLayout, new FragmentA())      .addToBackStack(null)      .commit();

不能使用 fragmentTransaction.setTransition(XXX) ,否则没有导航view的动画
添加切换动画时使用两个参数的,这两个参数的是只做开始的动画,popBackTack的动画由NavigationActivity做
例如:添加其它fragment

getFragmentManager()      .beginTransaction()      .hide(FragmentA.this)      .add(R.id.frameLayout, new FragmentB())      .addToBackStack(null)      .setCustomAnimations(R.animator.fragment_slide_left_enter, R.animator.fragment_slide_left_exit)      .commit();

4:让你的fragment继承NavigationFragment或NavigationFragmentV4
其它:
你可以通过viewChange(float page)方法获得fragment的滑动,比0开始。不使用请忽略

    public void viewChange(float page) {    }

默认是只可以滑动边来回退(推荐使用默认),你也可以改为全屏滑动
在activity的onCreate中添加

mScrollMode = ScrollMode.FULL_SCREEN;

github地址:https://github.com/lidajun/NavigationController

这里写图片描述

阅读全文
0 0
原创粉丝点击