原创 Window與PhoneWindow入門
Window 基礎 其子類爲PhoneWindow。 構造方法 在Activity#attch()中,會執行new PhoneWindow(this),因此Window中的mContext成員變量爲它所關聯
原创 AlertDialog入門
基礎 它一般是用來提醒用戶進行確認等操作的。如用戶要刪除一個信息,就需要提醒用戶是否確定要刪除。因此它叫“提醒對話框”。內部使用的是建造者模式。 AlertDialog 其內部有一個AlertContro
原创 Git之分支
基礎 參考 在一個分支上操作並commit後,不會影響另一個分支。 基本操作 git checkout -b dev master:從master分支上新建dev分支。master dev
原创 適配器與組合模式
適配器 定義 將一個類的接口轉換成客戶希望的另外一個接口,適配器模式使原本由於接口不兼容而不能一起工作的類可以一起工作。 關鍵詞 轉換、兼容——轉換接口,使不能兼容的接口可以兼容。 適配——
原创 新模式以及設計模式比較
規格模式 從多個對象中查找滿足條件的對象,查找條件往往不固定,可將查找條件抽離成單獨的規格類,由使用者自行編寫、傳入。查找條件往往有與、或、非操作,所以可以使用組合模式。基本類如下: ISpecifica
原创 ViewRootImpl入門
基礎 它本身只是一個很平常的類(據說早期的ViewRootImpl是一個Handler,然而api23中它便不是)。 在Activity#handleResumeActivity()中,會將Activity
原创 門面模式與中介者模式
門面模式 概念 爲子系統的一組接口提供一個統一使用的界面。它方便了外界對子系統的使用,減少了學習成本——一般的用戶只需要瞭解門面類即可,不需要了解子系統內部的各種處理邏輯。但,外界並不是只能通過門面類訪問子系統,可以直接繞
原创 volley之緩存、網絡與重試
基礎 volley對所有的請求都有本地緩存,對同一請求一般先從緩存中獲取,獲取不到再從網絡獲取。通常對圖片進行三級緩存也是同樣的思路。 CacheDispatcher 爲一個Thread,run()是一個死
原创 NavigationView,AppBarLayout與CollapsingToolbarLayout
NavigationView 在上面示例中,菜單項是通過listview自己添加的,而android support design包中提供的NavigationView是專門用來顯示菜單項的。 它與tool
原创 WindowManagerImpl,WMG與WMS入門
基礎 每一個Activity(包括dialog)都有一個Window對象,而它們顯示的佈局又是添加到該Window對象中的mDecor中的。而mDecor又是通過WindowManager#addView()才展示出來的。
原创 狀態欄一體化
基礎 只兼容4.4以上的版本。 theme 通過theme進行配置。需要分爲三類:v19以前,v19-v21以及v21以後。v19(無特殊設置)以前如下: <style name="AppTheme" pa
原创 Activity入門(二)
相關類 與Activity相關的類有很多,彼此之間通過一些變量都可相互引用。如下: 從上圖可以看出,每個Activity實例中都含有一個DecorView對象,ViewRootImpl對象,以及Windo
原创 Volley之ByteArrayPool——LruCache實現
基礎 其主要作用是byte[]的緩存池,可以指定最大的緩存的byte數目。當緩存的byte數目超過指定的最大值時,以LRU策略進行回收。在頻繁進行I/O操作時,如果不停地創建byte[],會導致堆內存的極速消耗,因爲gc的
原创 裝飾模式
定義 動態的給一個對象添加一些額外的功能。就添加功能來說,裝飾模式比繼承更靈活。 關鍵詞 靈活——裝飾模式比繼承要靈活得多。 動態、透明——外界不需要區分當前使用的是裝飾者還是被裝飾者。因爲
原创 模式彙總
參考 設計模式之禪——裏面關於模式的定義基本上都是來自於該書。 UML類圖參考 單例 一個系統中只有一個實例。 1,可以減少內存開支,實現數據共享。 2,