Trident Framework庫的介紹

框架需要解決的問題

  • 自定義標(biāo)題定制
  • 數(shù)據(jù)的處理,包括刷新,加載數(shù)據(jù),已經(jīng)數(shù)據(jù)為空的處理機(jī)制
  • 全局的功能實(shí)現(xiàn),沉浸式狀態(tài)欄,滑動(dòng)退出等
  • 提供便捷的工具類

框架的可移植性

為了便于framework庫的移植,上層framework庫不做具體應(yīng)用場(chǎng)景的封裝,僅只做接口的定義和調(diào)用。

框架中的Fragment概覽

FrameworkFragment提供抽象標(biāo)題操作相關(guān)的接口
DataFragment輸入FrameworkFragment的子集,提供數(shù)據(jù)相關(guān)的操作接口,比如是刷新數(shù)據(jù),數(shù)據(jù)為空的,數(shù)據(jù)異常的處理接口,但不包含分頁相關(guān)操作
RecycleFragment屬于DataFragment的子集,以Item的形式提供了RecycleView的實(shí)現(xiàn)。提供了列表九宮格,瀑布流等形式的布局展現(xiàn),同時(shí)提供了分頁展示的功能

使用過程中想了解的問題

  1. 項(xiàng)目中大多數(shù)頁面都是如何一個(gè)布局,標(biāo)題欄狀態(tài)圖標(biāo)等;

  2. 采用了下拉刷新的布局,如何給予recycle fragment 進(jìn)行自定義來實(shí)現(xiàn)

  3. 如何通過接口定義幾個(gè)方法,來分別實(shí)現(xiàn)頁面數(shù)據(jù)請(qǐng)求然后繪制頁面的邏輯;

  4. 幾個(gè)Fragment切換狀態(tài)恢復(fù)保存邏輯是如何思考來實(shí)現(xiàn)的,這時(shí)就可以提一些類似fragment重疊的bug,包括數(shù)據(jù)保存恢復(fù)的使用注意點(diǎn)等;

  5. 非列表頁面當(dāng)時(shí)是如何考慮的,定義實(shí)現(xiàn)接口的初衷和想法;

自定義標(biāo)題的加載流程

標(biāo)題是基于BaseActivity實(shí)現(xiàn)的,從流程圖我們可以看到,通過setContentView(int layout),我們實(shí)現(xiàn)了對(duì)布局生成的代理。通過代理,我們?cè)赩iew的上層增加了RootLayout作為ContentView的父控件,(RootLayout繼承自RelativeLayout,主要是為了解決引入沉浸式狀態(tài)欄而引入的bug,具體是指,當(dāng)界面為沉浸式顯示時(shí),點(diǎn)擊輸入法會(huì)導(dǎo)致界面的展示不符合預(yù)期)通過DefaultTitleTool的addTitleView()生成帶有標(biāo)題的ContentView。

LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,             LayoutParams.MATCH_PARENT);     if (!isPinTitle) {         params.addRule(RelativeLayout.BELOW, R.id.title_layout);     }     rootView.addView(contentView, params);     if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {mStatusBar = new View(context);mStatusBar.setId(R.id.view_status_bar);mStatusBar.setBackgroundColor(context.getResources().getColor(R.color.ch1));rootView.addView(mStatusBar,LayoutParams.MATCH_PARENT,getStatusBarHeight(context));         rootView.addView(mTitleView);         ((LayoutParams) mTitleView.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.view_status_bar);     } else {         rootView.addView(mTitleView);     }

Ps:重寫B(tài)aseActivity中的**isPinTitle()**方法可以設(shè)置標(biāo)題跟傳入的ContentView是上下排列還是標(biāo)題欄覆蓋在ContentView之上,默認(rèn)標(biāo)題欄是上下排列的,覆蓋模式的效果可以參考個(gè)人主頁標(biāo)題欄的實(shí)現(xiàn)。

##
![](https://raw.githubusercontent.com/lzhAndroid/image/master/FragmentFlow.png)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,970評(píng)論 25 709
  • viewpager是用在滾動(dòng)中相對(duì)比較多的,最近做一個(gè)定時(shí)滾動(dòng)顯示viewpager內(nèi)容。 步驟: 一:在布局文件...
    jiangbin1992閱讀 1,185評(píng)論 0 2
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,322評(píng)論 0 17
  • 大冰的《好嗎好的》是我看過大冰所寫的江湖三系列里面最長的、最厚的一本書,也差不多是我看得最快的一本書。為什么最厚的...
    日月同光閱讀 563評(píng)論 0 0
  • 趁著這幾天被拒的“低落”,出于一種調(diào)解心情的虛偽動(dòng)機(jī),我還是仔細(xì)地想了想,鄙人到底有什么能拿得出手,在情感博弈里能...
    風(fēng)芷劍傷閱讀 400評(píng)論 0 2

友情鏈接更多精彩內(nèi)容