Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jingyeoh/fragmentrigger
:boom:A powerful library powered by AOP to manage Fragments.(一个基于AOP设计的Fragment管理框架)
https://github.com/jingyeoh/fragmentrigger
activity-fragment android android-library aop aspectj fragment fragments swipeback
Last synced: 5 days ago
JSON representation
:boom:A powerful library powered by AOP to manage Fragments.(一个基于AOP设计的Fragment管理框架)
- Host: GitHub
- URL: https://github.com/jingyeoh/fragmentrigger
- Owner: JingYeoh
- License: mit
- Created: 2017-11-16T05:38:53.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-09-18T07:28:38.000Z (over 5 years ago)
- Last Synced: 2025-01-18T22:32:50.241Z (12 days ago)
- Topics: activity-fragment, android, android-library, aop, aspectj, fragment, fragments, swipeback
- Language: Java
- Homepage:
- Size: 5.59 MB
- Stars: 2,255
- Watchers: 60
- Forks: 265
- Open Issues: 31
-
Metadata Files:
- Readme: README-CN.md
- License: LICENSE
Awesome Lists containing this project
README
# FragmentRigger
![R](/images/rr.png)
![i](/images/i.png)
![g](/images/g.png)
![g](/images/g.png)
![e](/images/e.png)
![r](/images/r.png):boom:一个强大的Fragment框架。
![Platform](https://img.shields.io/badge/platform-Androd-green.svg)
![Download](https://api.bintray.com/packages/jkb/maven/fragment-rigger/images/download.svg)
![SDK](https://img.shields.io/badge/SDK-12%2B-green.svg)
![Build](https://img.shields.io/badge/Powered%20by-AsPectJ-blue.svg)
[![AsPectJ](https://img.shields.io/badge/license-MIT-yellowgreen.svg)](https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx)
[![JingYeoh](https://img.shields.io/badge/author-JustKiddingBaby-red.svg)](http://blog.justkiddingbaby.com/)**这可能是使用成本最低的Fragment框架。**
**无需继承!!!无需继承!!!无需继承!!!** 重要的话说三遍!!
在使用`FragmentRigger`的时候,使用成本只有一行注解!!!
**原理:** 是把`Fragment`/`Activity`生命周期相关方法定义为切点,通过ASpectJ绑定并使用代理类进行操作。### 演示
>本项目支持常见场景下的`Fragment`操纵方式,如有不支持的场景,欢迎提交[Issues](https://github.com/JustKiddingBaby/FragmentRigger/issues)或者[Email me](mailto:[email protected])|Stack manager|Show|Lazy loading|Replace|
|:-----------:|:-----:|:---------:|:------:|
|||||### 目标
* 让Fragment的使用更简单.
* 以最低的成本去使用Fragment.### Wiki
#### 开始
* [安装](https://github.com/JustKiddingBaby/FragmentRigger/wiki/首页)
* [开始使用](https://github.com/JustKiddingBaby/FragmentRigger/wiki/开始使用)
* [Fragment的操纵](https://github.com/JustKiddingBaby/FragmentRigger/wiki/Fragment的操纵)
* [自定义Fragment tag](https://github.com/JustKiddingBaby/FragmentRigger/wiki/%E8%87%AA%E5%AE%9A%E4%B9%89Fragment-tag)
* [懒加载](https://github.com/JustKiddingBaby/FragmentRigger/wiki/懒加载)
* [转场动画](https://github.com/JustKiddingBaby/FragmentRigger/wiki/转场动画)
* [onBackPressed拦截](https://github.com/JustKiddingBaby/FragmentRigger/wiki/onBackPressed拦截)
* [startFragmentForResult方法](https://github.com/JustKiddingBaby/FragmentRigger/wiki/startFragmentForResult方法)
* [滑动退出Activity/Fragment](https://github.com/JustKiddingBaby/FragmentRigger/wiki/滑动边缘退出)
* [如何在library module中使用](https://github.com/JustKiddingBaby/FragmentRigger/wiki/如何在library-module中使用)
#### 信息
* [gradle错误](https://github.com/JustKiddingBaby/FragmentRigger/wiki/gradle%E4%BE%9D%E8%B5%96%E9%97%AE%E9%A2%98)
* [代码混淆](https://github.com/JustKiddingBaby/FragmentRigger/wiki/代码混淆)
* [版本日志](https://github.com/JustKiddingBaby/FragmentRigger/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`即可。```java
//MainActivity.java
@Puppet(containerViewId = R.id.atyContent)//containerViewId是你需要操纵的Fragment在add时候的container view
public class MainActivity extends AppCompatActivity
```
```java
//TestFragment.java
@Puppet
public class TestFragment extends Fragment
```**2、使用框架操纵`Fragment`**
>添加`@Puppet`注解之后,在使用框架提供的`Fragment`操纵的方法的时候通过代理类`Rigger`来操纵。```java
@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`注解.```java
@Swiper
@Puppet
public class MainActivity extends AppCompatActivity{
// swiper 只可以使用在有 puppet 注解的类上.
}
```
```java
@Swiper
@Puppet
public class TestFragment extends Fragment{
// swiper 只可以使用在有 puppet 注解的类上.
}
```### License
![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/License_icon-mit-88x31-2.svg/128px-License_icon-mit-88x31-2.svg.png)本项目遵循MIT开源协议. 浏览[LICENSE](https://opensource.org/licenses/MIT)查看更多信息.