MCPcopy Index your code
hub / github.com/JingYeoh/FragmentRigger

github.com/JingYeoh/FragmentRigger @v1.4.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.4.4 ↗ · + Follow
395 symbols 1,036 edges 43 files 151 documented · 38%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

FragmentRigger

R i g g e r

:boom:一个强大的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

开始

信息

特性

  • [x] 超强大Api支持
  • [x] 足够多的英文注释
  • [x] 严格的异常抛出
  • [x] 解决Fragment中常见的异常及Bug
  • [x] 事务提交永不丢失
  • [x] 扩展原生方法,添加onBackPressed等常见的方法支持
  • [x] 当前栈成员树状图打印
  • [x] Fragment懒加载
  • [x] Fragment转场动画
  • [x] 自定义Fragment tag
  • [x] 为非栈内的Fragment添加onBackPressed支持
  • [x] 滑动边缘退出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查看更多信息.

Extension points exported contracts — how you extend this code

IRigger (Interface)
Rigger interface class.used to define the methods can be called. @author JingYeoh <a href="mailto:yangjing9611@foxmail. [1 …
rigger/src/main/java/com/jkb/fragment/rigger/rigger/IRigger.java
OnSwipeChangedListener (Interface)
Interface definition for a callback to be invoked when the swipeLayout is swiping or status is changed. @see #setOnSwip [1 …
rigger/src/main/java/com/jkb/fragment/swiper/SwipeLayout.java
RiggerConsts (Interface)
Used to save the static constant. @author JingYeoh Email me <a href="http
rigger/src/main/java/com/jkb/fragment/rigger/utils/RiggerConsts.java

Core symbols most depended-on inside this repo

getRigger
called by 64
rigger/src/main/java/com/jkb/fragment/rigger/rigger/Rigger.java
findViewById
called by 34
app/src/main/java/com/yj/app/base/BaseFragment.java
getRiggerInstance
called by 19
rigger/src/main/java/com/jkb/fragment/rigger/aop/RiggerInjection.java
i
called by 18
rigger/src/main/java/com/jkb/fragment/rigger/utils/Logger.java
getRiggerMethod
called by 18
rigger/src/main/java/com/jkb/fragment/rigger/aop/RiggerInjection.java
throwException
called by 17
rigger/src/main/java/com/jkb/fragment/rigger/rigger/_Rigger.java
canSwipe
called by 15
rigger/src/main/java/com/jkb/fragment/swiper/SwipeLayout.java
createRigger
called by 13
rigger/src/main/java/com/jkb/fragment/rigger/rigger/Rigger.java

Shape

Method 352
Class 39
Interface 3
Enum 1

Languages

Java100%

Modules by API surface

rigger/src/main/java/com/jkb/fragment/rigger/rigger/_Rigger.java48 symbols
rigger/src/main/java/com/jkb/fragment/swiper/SwipeLayout.java40 symbols
rigger/src/main/java/com/jkb/fragment/rigger/rigger/_FragmentRigger.java26 symbols
rigger/src/main/java/com/jkb/fragment/rigger/rigger/IRigger.java24 symbols
rigger/src/main/java/com/jkb/fragment/rigger/rigger/Rigger.java21 symbols
rigger/src/main/java/com/jkb/fragment/rigger/aop/FragmentInjection.java21 symbols
rigger/src/main/java/com/jkb/fragment/rigger/helper/FragmentStackManager.java18 symbols
rigger/src/main/java/com/jkb/fragment/rigger/aop/ActivityInjection.java17 symbols
rigger/src/main/java/com/jkb/fragment/rigger/rigger/_ActivityRigger.java15 symbols
rigger/src/main/java/com/jkb/fragment/rigger/rigger/RiggerTransactionImpl.java14 symbols
app/src/main/java/com/yj/app/test/lazyload/LazyLoadFragment.java12 symbols
app/src/main/java/com/yj/app/test/start/StartFragment.java11 symbols

For agents

$ claude mcp add FragmentRigger \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact