滑動(平移)的實現(xiàn)方式 首先看一下有幾種方式可以實現(xiàn)滑動效果,實際也就是平移。 通過layout實現(xiàn) 也可以簡單封裝成一個方法,實現(xiàn)X軸方向上的平移: 通過offset方法實...
滑動(平移)的實現(xiàn)方式 首先看一下有幾種方式可以實現(xiàn)滑動效果,實際也就是平移。 通過layout實現(xiàn) 也可以簡單封裝成一個方法,實現(xiàn)X軸方向上的平移: 通過offset方法實...
觀察者模式 下面寫了一個簡單例子,實現(xiàn)圖片的異步加載。首先實現(xiàn)一個Observer對象,用來接收數(shù)據(jù),更新圖片內(nèi)容。onNext方法接收一個Bitmap對象。 然后實現(xiàn)一個O...
Junit Android Studio創(chuàng)建的項目,默認支持Junit測試,我們可以在src/test/目錄下看到一個ExampleUnitTest方法。使用方式也比較簡單,...
屬性動畫 屬性動畫支持在xml文件中定義,便于代碼復用。下面先給出一個最簡單的ValueAnimator例子。我們需要在res/animator目錄下新建一份property...
OKHTTP AsyncTask RecyclerView Parcel 參考: 關(guān)于 GlideGoogle推薦——Glide使用詳解簡單跨進程使用EventBus
滑動列表是最常見的UI界面,也常見卡頓問題。今天看下兩種列表的使用上面有什么區(qū)別。 ListView ListView使用非常簡單,但是也容易出現(xiàn)卡頓問題。默認情況下是比較耗...
AIDL Android跨進程通信Binder ContentProvider Android四大組件-ContentProvider Messenger Android跨進...
應(yīng)用層 應(yīng)用層使用job,首先創(chuàng)建一個JobService,重寫onStartJob和onStopJob方法,如果job需要執(zhí)行一些比較耗時操作,則可以通過異步的方式實現(xiàn),在...
裝飾模式 以我們最熟悉的Context為例,它就是一種裝飾模式。 我是這樣理解的,Context是一個抽象的人,沒有具體指誰,ContextImpl是一個裸男,Context...
類加載器 通常情況下,我們都認為有三種系統(tǒng)提供的類加載器: 但是,從虛擬機的角度講,只有兩種不同的類加載器,Bootstrap和其他加載器。因為Bootstrap是完全用C+...
View的刷新 前面學習過,view的刷新過程分為三步,measure,layout和draw。 所以一般的卡頓問題都可以從這三個過程分析,通過systrace查看哪一個流程...
應(yīng)用層 ContentProvider平時使用比較少,今天大概看一下它的使用和簡單原理。通常ContentProvider會結(jié)合SQLiteDatabase數(shù)據(jù)庫一起使用。所...
前面介紹全局廣播的時候,提到過根據(jù)intent的flag不同,廣播會被加入到不同的隊列中。 前臺廣播 默認情況下,Intent是不帶FLAG_RECEIVER_FOREGRO...
前面介紹過本地廣播,今天看一下全局廣播的實現(xiàn)。 registerReceiver 我們知道,應(yīng)用獲取到的Context都間接繼承了ContextWrapper,所以廣播注冊的...
getInstance LocalBroadcastManager實現(xiàn)了一個單例模式,每個進程只能獲取到一個實例。 為了實現(xiàn)單例,構(gòu)造函數(shù)是私有的。 構(gòu)造函數(shù)傳入了Appli...
變量占用的字節(jié) 我們都知道基本類型,byte跟boolean是1個字節(jié),short跟char是2個字節(jié),int跟float是4個字節(jié),long跟double是8個字節(jié)。 類型...
AMS的CPU負載檢測 AMS有一個線程會定時計算每個進程的CPU負載情況 原理比較簡單,它通過synchronized同步鎖的方式,在while循環(huán)中,空閑時通過wait進...