Fragment系列文章:
一、Fragment全解析系列(一):那些年踩過的坑
二、Fragment全解析系列(二):正確的使用姿式
三、Fragment之個人解決方案:Fragmentationhtml
若是你通讀了本系列的前兩篇,我相信你能夠寫出大部分場景都能正常運行的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
爲"單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)
一、解決多點觸控問題
二、onFragmentResult()
如今在任何狀況均可以被正確觸發了
三、更強的兼容性,解決已知BUG
四、對於25.1.0+的 v4包,完善了SharedElement!
一、提供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 }