Skip to content

Latest commit

 

History

History
134 lines (115 loc) · 5.84 KB

README-CN.md

File metadata and controls

134 lines (115 loc) · 5.84 KB

FragmentRigger

R i g g e r

💥一个强大的Fragment框架。

Platform Download SDK Build AsPectJ JingYeoh

这可能是使用成本最低的Fragment框架。
无需继承!!!无需继承!!!无需继承!!! 重要的话说三遍!!
在使用FragmentRigger的时候,使用成本只有一行注解!!!
原理: 是把Fragment/Activity生命周期相关方法定义为切点,通过ASpectJ绑定并使用代理类进行操作。

演示

本项目支持常见场景下的Fragment操纵方式,如有不支持的场景,欢迎提交Issues或者Email me

Stack manager Show Lazy loading Replace

目标

  • 让Fragment的使用更简单.
  • 以最低的成本去使用Fragment.

Wiki

开始

信息

特性

  • 超强大Api支持
  • 足够多的英文注释
  • 严格的异常抛出
  • 解决Fragment中常见的异常及Bug
  • 事务提交永不丢失
  • 扩展原生方法,添加onBackPressed等常见的方法支持
  • 当前栈成员树状图打印
  • Fragment懒加载
  • Fragment转场动画
  • 自定义Fragment tag
  • 为非栈内的Fragment添加onBackPressed支持
  • 滑动边缘退出Activity/Fragment
  • 配置Fragment启动模式的选项
  • Fragment间共享元素转场动画
  • 支持DialogFragment

解决的问题

  • Fragment界面重叠
  • Fragment多级嵌套
  • Fragment栈的管理问题
  • Fragment事务提交失败
  • Activity在非onResume状态下提交事务
  • Fragment事务提交不能立即执行导致两次提交事件冲突
  • 内存重启时的一系列异常
  • 屏幕翻转时的数据保存及恢复
  • Can not perform this action after onSaveInstanceState
  • 在ViewPager中的懒加载及其他场景下的懒加载
  • 不同场景下转场动画不执行问题

使用样例

本框架提供了强大的Api支持。
和已有的大部分Fragment框架不同,不需要继承任何父类,只需要添加一行注解即可。
在操纵Fragment的时候只需要通过代理类来操作,本框架完全采用一种插入式 的方式来降低使用成本。

1、声明为框架的支持类

在需要使用本框架的Activity/Fragment上添加注解@Puppet即可。

//MainActivity.java
@Puppet(containerViewId = R.id.atyContent)//containerViewId是你需要操纵的Fragment在add时候的container view
public class MainActivity extends AppCompatActivity
//TestFragment.java
@Puppet
public class TestFragment extends Fragment

2、使用框架操纵Fragment

添加@Puppet注解之后,在使用框架提供的Fragment操纵的方法的时候通过代理类Rigger来操纵。

@Puppet(containerViewId = R.id.atyContent)
public class MainActivity extends AppCompatActivity{
  ...
  //add并show一个Fragment并添加至栈中,此时添加的Fragment是在@Puppet中的containerViewId中的
   Rigger.getRigger(this).startFragment(TestFragment.newInstance());
}

3、Activity/Fragment 滑动退出

在需要滑动边缘退出的Activity/Fragment上添加Swiper注解.

@Swiper
@Puppet
public class MainActivity extends AppCompatActivity{
    // swiper 只可以使用在有 puppet 注解的类上.
}
@Swiper
@Puppet
public class TestFragment extends Fragment{
   // swiper 只可以使用在有 puppet 注解的类上.
}

License

本项目遵循MIT开源协议. 浏览LICENSE查看更多信息.