Fragment之個人解決方案:Fragmentation

Fragment系列文章:
一、Fragment全解析系列(一):那些年踩過的坑
二、Fragment全解析系列(二):正確的使用姿式
三、Fragment之個人解決方案:Fragmentationhtml

附:SwipeBackFragment的實現分析git

若是你通讀了本系列的前兩篇,我相信你能夠寫出大部分場景都能正常運行的Fragment了。若是你想了解更多,那麼你能夠看看我封裝的這個庫:Fragmentation。
本篇主要介紹這個庫,解決了一些BUG,使用簡單,提供實時查看棧視圖等實用功能。github


源碼地址:Github,歡迎Star,Fork。web

Demo網盤下載(V_0.9.0)
Demo演示:
單Activity + 多Fragment,項目中有3個Demo。微信

流式的單Activity+多Fragment:架構

相似微信交互方式的單Activity+多Fragment:(全頁面支持滑動返回)app

相似新版仿知乎交互方式的單Activity+多Frgment:ide

Fragmentation

爲"單Activity + 多Fragment的架構","多模塊Activity + 多Fragment的架構"而生,幫你簡化使用過程,輕鬆解決各類複雜嵌套等問題,修復了官方Fragment庫存在的一些BUG。gradle

特性

一、快速開發出各類嵌套設計的Fragment App動畫

二、實時查看Fragment的(包括嵌套Fragment)棧視圖的對話框和Log,方便調試

三、增長啓動模式、startForResult等相似Activity方法

四、相似Android事件分發機制的Fragment回退方法:onBackPressedSupport(),輕鬆爲每一個Fragment實現Back按鍵事件

五、New!!! 提供onSupportVisible()等生命週期方法,簡化嵌套Fragment的開發過程; 提供統一的onLazyInitView()懶加載方法

六、提供靠譜的 Fragment轉場動畫 的解決方案

七、更強的兼容性, 解決多點觸控、重疊等問題

八、支持SwipeBack滑動邊緣退出(須要使用Fragmentation_SwipeBack庫,詳情README)

重大更新日誌

0.9.X 來了! 詳情點這裏

一、解決多點觸控問題

二、onFragmentResult()如今在任何狀況均可以被正確觸發了

三、更強的兼容性,解決已知BUG

四、對於25.1.0+的 v4包,完善了SharedElement!

0.8.X 來了!

一、提供onSupportVisible(),onSupportInvisible()等生命週期方法,簡化嵌套Fragment的開發過程;

二、提供統一的onLazyInitView()懶加載方法;

三、SupportActivity提供registerFragmentLifecycleCallbacks()來監控其下全部Fragment的生命週期;

四、能夠自定義Tag了!

五、事務提交模式默認爲commitAllowingStateLoss().

如何使用

1. 項目下app的build.gradle中依賴:

1 // appcompat v7包是必須的
2 compile 'me.yokeyword:fragmentation:0.9.3'
3 // 若是想使用SwipeBack 滑動邊緣退出Fragment/Activity功能,請再添加下面的庫
4 // compile 'me.yokeyword:fragmentation-swipeback:0.7.9'

2. Activity繼承SupportActivity:

 

 1 public class MainActivity extends SupportActivity {
 2 
 3   @Override
 4   protected void onCreate(Bundle savedInstanceState) {
 5     super.onCreate(savedInstanceState);
 6     setContentView(...);
 7     if (savedInstanceState == null) {
 8       loadRootFragment(R.id.fl_container, HomeFragment.newInstance());  
 9     }
10   }

 

3. Fragment繼承SupportFragment:

 

1 public class HomeFragment extends SupportFragment {
2 
3   private void xxx() {
4         // 啓動新的Fragment, 同時還有start(fragment,SINGTASK)、startForResult、startWithPop等啓動方法
5     start(DetailFragment.newInstance(HomeBean));
6         // ... 其餘方法請自行查看 API
7   }
相關文章
相關標籤/搜索