1. 程式人生 > >android Fragmentation框架原始碼全面解析一

android Fragmentation框架原始碼全面解析一

private void start(FragmentManager fragmentManager, final ISupportFragment from, ISupportFragment to, String toFragmentTag, boolean dontAddToBackStack, ArrayList<TransactionRecord.SharedElement> sharedElementList, boolean allowRootFragmentAnim, int type) { FragmentTransaction ft = fragmentManager.beginTransaction();
boolean addMode = (type == TYPE_ADD || type == TYPE_ADD_RESULT || type == TYPE_ADD_WITHOUT_HIDE); Fragment fromF = (Fragment) from; Fragment toF = (Fragment) to; Bundle args = getArguments(toF); args.putBoolean(FRAGMENTATION_ARG_REPLACE, !addMode); if (sharedElementList == null) { if
(addMode) { // Replace mode forbidden animation, the replace animations exist overlapping Bug on support-v4. TransactionRecord record = to.getSupportDelegate().mTransactionRecord; if (record != null && record.targetFragmentEnter != Integer.MIN_VALUE) { ft.setCustomAnimations(record.targetFragmentEnter
, record.currentFragmentPopExit, record.currentFragmentPopEnter, record.targetFragmentExit); args.putInt(FRAGMENTATION_ARG_CUSTOM_END_ANIM, record.targetFragmentEnter); } else { ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); } } else { args.putInt(FRAGMENTATION_ARG_ROOT_STATUS, SupportFragmentDelegate.STATUS_ROOT_ANIM_DISABLE); } } else { args.putBoolean(FRAGMENTATION_ARG_IS_SHARED_ELEMENT, true); for (TransactionRecord.SharedElement item : sharedElementList) { ft.addSharedElement(item.sharedElement, item.sharedName); } } if (from == null) { ft.replace(args.getInt(FRAGMENTATION_ARG_CONTAINER), toF, toFragmentTag); if (!addMode) { ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); args.putInt(FRAGMENTATION_ARG_ROOT_STATUS, allowRootFragmentAnim ? SupportFragmentDelegate.STATUS_ROOT_ANIM_ENABLE : SupportFragmentDelegate.STATUS_ROOT_ANIM_DISABLE); } } else { if (addMode) { ft.add(from.getSupportDelegate().mContainerId, toF, toFragmentTag); if (type != TYPE_ADD_WITHOUT_HIDE) { ft.hide(fromF); } } else { ft.replace(from.getSupportDelegate().mContainerId, toF, toFragmentTag); } } if (!dontAddToBackStack && type != TYPE_REPLACE_DONT_BACK) { ft.addToBackStack(toFragmentTag); } supportCommit(fragmentManager, ft); }

相關推薦

android Fragmentation框架原始碼全面解析

private void start(FragmentManager fragmentManager, final ISupportFragment from, ISupportFragment to, String toFragmentTag, boolean dont

Android開源框架原始碼解析

private Map<Integer, Long> memo = new HashMap<>(); // 簡單地用了一下快取思想 private long fa

Android嚮導框架(Wizard framework)的種實現(需要原始碼的同學請留言)

做介面開發的兄弟姐妹都知道嚮導框架一般GUI庫都有提供,而android的介面庫中,卻沒有嚮導框架這個東東。 不要驚訝,你要是不相信的話可以到谷歌查詢,我在stackoverflow看到一些提問:如何實現嚮導式的互動,在android中:how to implement a wizard like

Android Butterknife 框架原始碼解析(3)——Butterknife 8.7.0原始碼分析

前文連結地址:《Android Butterknife 框架原始碼解析(1)——ButterKnife的使用》 http://blog.csdn.net/bit_kaki/article/details/74926076《Android Butterknife 框架原始碼解析

laravel框架原始碼分析()自動載入

一、前言   使用php已有好幾年,laravel的使用也是有好長時間,但是一直對於框架原始碼的理解不深,原因很多,歸根到底還是php基礎不紮實,所以原始碼看起來也比較吃力。最近有時間,所以開啟第5、6遍的框架原始碼探索之旅,前面幾次都是看了一些就放棄,希望這次能夠看完。每一次看原始碼都會有新的收穫,因為框

Android之ConstraintLayout用法全面解析

在Android開發中我們在寫佈局時候經常會使用到佈局的巢狀,比如常見的Android佈局FrameLayout LinearLayout RelativeLayout等佈局的相互巢狀,而且在寫xml佈局時候對佈局視覺化的操作不是很到位(很雞肋) 而ConstarintL

新手解讀:laravel 框架原始碼分析(

眾所周知,php的框架數不勝數,近幾年,一個以優雅著稱的框架,漸漸被國內phper所知道,並且開始使用,但是larave有一個很明顯的缺點就是,他的文件內容少的可憐。而且國內的社群也不是很活躍。所以對使用這款框架的新書造成了很大困難。 作者作為一個入門也沒多久的新手,

必須知道的Android網路框架大全!值得看良心文章!

導語    大通常在 Android 中進行網路連線一般使用 Scoket 和 HTTP兩種方式。而 HTTP 請求方式比 Scoket 多得多,HTTP 請求一般採用原生的 HttpClient 和 HttpUrlConnection 的兩種網路訪問方式。可是在 Andro

Executor執行框架原始碼分析()——executor、threadFactory、ThreadPoolExecutor 、Future元件的關係及作用

       executor執行框架是JDK1.5新增的,用於專注於任務執行的框架。其最大的特點就是將任務的建立和任務的執行分離,鬆耦合,已達到最大限度的利用計算機資源(執行緒和記憶體等)。在併發程式設計中,executor是一個必備的工具。     在分析原始碼之前,首先

Android之使用Android-query框架進行開發(

開發Android使用Android-query框架能夠快速的,比傳統開發android所要編寫的程式碼要少得很多,容易閱讀等優勢。  以下內容是我學習的一些心得分享: 第一節:   // 必須實現AQuery這個類 AQuery aq = new AQuery(view);// 按順序分析:取得xm

Testng 測試框架原始碼閱讀(

首先看下 maven-surefire 通過testng拉起單測,執行異常的日誌(有助於我們理解testng中呼叫關係): java.lang.instrument.IllegalClassFormatException: Error while instrumentin

Android MINA框架之實戰總結() Mina連線,斷開,重連

(一). 前言 Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 組織一個較新的專案,它為開發高效能和高可用性的網路應用程式提供了非常便利的框架

Android Multimedia框架總結(十)CodeC部分之AwesomePlayer到OMX服務

前言:上篇文《Android Multimedia框架總結(十)》總結了音視訊的輸出過程,從今天開始分析Codec部分,今天分析的是AwesomePlayer到OMX服務過程,也就是開啟OpenMax準備相關。 先看下今天的Agenda: 一張圖看清O

Android 軟鍵盤的全面解析,讓你不再怕控件被遮蓋

() details 聲明 token andro 博文 blog 轉載 targe 博客地址:http://blog.csdn.net/l540675759/article/details/74528641 (2)在軟鍵盤彈出時,是否需要Activity對此進行調整adj

Spring5原始碼深度解析()之理解Configuration註解

程式碼地址:https://github.com/showkawa/spring-annotation/tree/master/src/main/java/com/brian 1.Spring體系結構 1.1、Spring Core:主要元件是BeanFactory,建立JavaBean的工廠,使用控制反

Android框架原始碼解析之()Volley

前幾天面試CVTE,HR面掛了。讓內部一個學長幫我查看了一下面試官評價,發現二面面試官的評價如下: 廣度OK,但缺乏深究能力,深度與實踐不足 原始碼:只能說流程,細節程式碼不清楚,retrofit和volley都是。 感覺自己一方面:自己面試技巧有待提高吧(框

Android八門神器(): OkHttp框架原始碼解析

HTTP是我們交換資料和媒體流的現代應用網路,有效利用HTTP可以使我們節省頻寬和更快地載入資料,Square公司開源的OkHttp網路請求是有效率的HTTP客戶端。之前的知識面僅限於框架API的呼叫,接觸到實際的工作之後深知自己知識的不足,故而深挖框架原始碼盡力吸取前輩的設計經驗。關於此框架的原始碼解析網上

Android網路框架:OKHttp原始碼簡單解析

這是第一次解析原始碼並把它寫出來,在之前,我一直以為只要會用別人的輪子就好,做出實際的效果就行,對看原始碼對自己的能力提升不以為然。後來偶然聽到一句話:看別人的DEMO,你就可以會用輪子,但是要想用好輪子,還是得看原始碼。我覺得看原始碼有兩個方面的好處: 1

Android 常用開源框架源碼解析 系列 (十)picasso 圖片框架

hand 需求 trim cor pan setname github ESS true 一、前言 Picasso 強大的圖片加載緩存框架 api加載方式和Glide 類似,均是通過鏈式調用的方式進行調用 1.1、作用 Picasso 管理整個圖片加載、轉換、緩存

Android框架原始碼解析之(四)Picasso

這次要分析的原始碼是 Picasso 2.5.2 ,四年前的版本,用eclipse寫的,但不影響這次我們對其原始碼的分析 地址:https://github.com/square/picasso/tree/picasso-parent-2.5.2 Picasso的簡單使用