方便構建單Activity+多Fragment輕量級框架:FragmentStack

ybkg3063 10年前發布 | 62K 次閱讀 Android開發 移動開發

一個封裝了啟動模式的Fragment便捷使用庫,方便構建單Activity+多Fragment輕量級框架。

使用說明:

一 為什么要寫這個庫

1.Fragment創建速度完勝Activity,在長期的開發實踐中,明顯感覺到Fragment響應速度,內存占用等方面擁有巨大的優勢,將頁面fragment化有助于提升app流暢度;

2.fragment創建和使用相比Activity更加麻煩,其中,回退棧管理,動畫,關閉,隱藏等不便于使用,需要進一步封裝提升效率;

3.fragment缺少啟動模式,使得管理起來很有難度,很多在Activity上很常見的需求在Fragment使用需要更多更復雜的技巧,不利于快速開發;

二 它能為你做什么

1.替代傳統的Activity頁面,輕量化頁面;

2.開啟,關閉,動畫,回退棧,生命周期回調等操作更加方便,一行代碼即可搞定;

3.自帶Activity四種啟動模式,接管了系統的回退棧,很常見的場景,如 用戶中心--->注冊用戶--->注冊成功--->返回原來的用戶中心,就可以設置啟動模式為singleTask,注冊成功后退出當前任務棧,或者設置用戶中心singleInstance,直接new創建后再onNewInstance()方法中更新數據即可,框架自動remove上層fragment;

三 配置和開始使用

對于如何導入,也是相當的簡單,android studio的用戶,直接:

compile 'com.mrwang.Fragmenttack:stacklibrary:1.0.0'

然后,在你的項目中,MainActivity繼承RootActivity

public class MainActivity extends RootActivity {

    @Override     protected RootFragment getRootFragment() {         return new HomeFragment();     }

    @Override     public void onCreateNow(Bundle savedInstanceState) {         setAnim(R.anim.next_in, R.anim.next_out, R.anim.quit_in, R.anim.quit_out);     } }</pre>

Fragment繼承RootFragment

public class HomeFragment extends RootFragment{

    @Nullable     @Override     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    } }</pre>

接下來,可以自由方便的使用Fragment了;

四 API說明

1.打開一個新的Fragment;

常規方式

open(new Fragment());

帶參形式

open(new Fragment());
在新Fragment中用Bundle bundle = getArguments();獲取

帶啟動模式形式,支持四種啟動模式(實際項目中以singleTask最為實用);

open(new Fragment1(), null, StackManager.STANDARD);
open(new Fragment1(), null, StackManager.SINGLE_TOP);
open(new Fragment1(), null, StackManager.SINGLE_TASK);
open(new Fragment1(), null, StackManager.SINGLE_INSTANCE);

關閉當前的fragment

close()

關閉指定的Fragment

close(fragment)

設置頁面切換動畫

setAnim(R.anim.next_in, R.anim.next_out, R.anim.quit_in, R.anim.quit_out);

進入下一個頁面,兩個頁面的回調,只需重寫

private void onNowHidden() {

}

private void onNextShow() {

}</pre>

Fragment獲取依賴的Activity

RootActivity root = getRoot();

singleTop,fragment被重復創建的回調

@Override
public void onNewIntent() {
}

若需要監聽按鍵事件,只需設置sKeyCallBack

setKeyCallBack(new KeyCallBack() {
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            return false;
        }
    });

 

 

 

</div> </div>

項目地址: https://github.com/Mr-wangyong/FragmentStack

 本文由用戶 ybkg3063 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!