Andoid优雅实现页面跳转与传值

Android-Toolkit

一个轻量的Android开发工具包

项目地址 : https://github.com/zfman/Android-Toolkit

由于前期设计不合理,该库废弃,请移至新版本的库
新库的Github地址 : https://github.com/zfman/common

引入依赖

dependencies {
    compile 'com.zhuangfei:Toolkit:1.0.2'
}

IntentToolkit

IntentToolkit是一个可实例化的对象,使用它可以轻松的执行页面跳转、传值等操作,IntentToolkitBundleModel封装在其内部,链式调用更加简洁。

1.普通跳转

该用法用于从A跳转到B页面

//普通跳转
public void toB(){
  new IntentToolkit().with(this)
                .target(B.class)
                .execute();
}

2.跳转之后不finish自身

该用法用于从A跳转到B页面,且不finish自身,默认的情况下A->B之后,A将被Finish掉。

如果不需要finish,参考如下代码:

//普通跳转
public void toB(){
  new IntentToolkit().with(this)
                .target(B.class)
                .ignoreFinish()//取消finish
                .execute();
}

3.普通回退

该用法用于从B回退到A页面

//普通跳转
new IntentToolkit().with(this)
                .target(returnClass)
                .canBack()//调用该方法表示执行回退
                .execute();

4.携带复杂数据跳转

Student需要实现序列化接口

new IntentToolkit().with(this)
                .target(OtherActivity.class)
                .fromItem(1)
                .toItem(2)
                .put("name","zhuangfei")
                .put("passwd","123456")
                .put("student",new Student("311509060128",23,"zhaungfei"))
                .execute();

5.携带数据回退

new IntentToolkit().with(this)
                .target(returnClass)
                .fromItem(2)
                .toItem(1)
                .put("result","成功")
                .canBack()
                .execute();

6.接收数据

类似以下用法,指定默认的值,可以避免出现空指针异常

name=BundleTools.getString(this,"name","defaultValue");
returnClass=BundleTools.getFromClass(this,A.class);

7.取消转场动画

首先定义一个ActivityBuilder,继承DefaultActivityBuilder,将转场动画取消,该用法也可以为Intent添加flag

/**
 * 取消转场动画,返回0即可
 */

public class CustomActivityBuilder extends DefaultActivityBuilder {
    @Override
    public void filter(Intent intent) {

    }

    @Override
    public int getEnterAnimOnTo() {
        return 0;
    }

    @Override
    public int getOutAnimOnTo() {
        return 0;
    }

    @Override
    public int getEnterAnimOnBack() {
        return 0;
    }

    @Override
    public int getOutAnimOnBack() {
        return 0;
    }
}

然后设置跳转即可

new IntentToolkit().with(this)
                .target(A.class)
                .builder(new CustomActivityBuilder())
                .execute();

猜你喜欢

转载自blog.csdn.net/lzhuangfei/article/details/79596739