原创 仿微信可摺疊效果的TextView

在微信朋友圈中,發送大量的文本信息時,在展示的時候微信會將該文本信息進行摺疊處理,出現“全文”,“收起”的操作提示。當點擊全文時,才能看到全部的文本信息,正好最近的項目中也提出了類似的需求,這裏就對該自定義View的實現的方法進行

原创 TabLayout初始化後onTabSelected首次沒有被回調的問題

我們經常使用TabLayout控件來管理多個頁面的展示,但是應用不當的話,可能會給我們帶來一些小小的困擾。比如說,我就曾經遇到過TabLayout 初始化後OnTabSelectedListener中 onTabSelected首

原创 Android開發筆記(二) 關於彈窗

Android中提供幾種不同的彈窗模式,Toast,Dialog,PopupWindow 每種彈窗又對應了不同的應用場景,我們可以根據不同業務場景來選擇。下面將會分別介紹上面四種不同彈窗的應用,同時也對每中彈窗的源碼和所遇到的問題進行

原创 Android開發筆記(一)沉浸式狀態欄

在Android開發中我們越來越重視用戶的App操作體驗,在使用App中我們主張減少對用戶的干擾,經常會提到一致性體驗。爲了追求界面的風格的一致性,Google官方在Android 4.4 開始,支持了系統最上方的狀態欄(Status

原创 AsyncTask源碼解析

概述 我們知道在Android應用開始程序運行時,系統會爲應用啓動一個單獨的進程。默認情況下,該應用中的所有組件都會運行在相同的進程和主線程中。一個Android程序默認只有一個進程,但是你可以在清單文件中通過android:proces

原创 RxJava2.0中fromArray操作符用法和源碼分析(三)

fromArray基本使用 fromArray用來創建一個Observable對象,可以將一個數組轉化爲可被觀察的序列並且將它的數據逐個發射。 fromArray與just相似,都可以用來發射單個或一組數據,但是區別是當fromAr

原创 Android 程序在系統中如何完成啓動

一段程序的調用都有它的程序入口,衆所周知Java程序的入口在main方法。作爲Android來說應用程序的啓動是通過 ActivityThread 類 來執行的。系統中對於該類的介紹如下: 該類是管理應用程序進程中主線程的執行,調度和執行

原创 深入理解 Android 之 View 的繪製流程(四)_Draw

前面我們介紹了Measure和layout,下面我們就開始分析Draw。先從ViewRootImpl中開始。 ViewRootImpl#performDraw private void performDraw() { i

原创 RxJava2.0中map操作符用法和源碼分析(四)

map基本使用 map是變換操作符,對原始Observable發射的每一項數據應用一個你選擇的函數生成新的結果,然後返回一個發射這些結果Observable。 但從字面上還是比較難以理解,我們可以用代碼示例說明: Observable

原创 深入理解 Android 之 View 的繪製流程(一)

上一篇中我們介紹了通過setContentView方法將xml佈局文件加載到Activity中,知道了在PhoneWindow中的setContentView方法裏,有分別調用了installDecor方法,mLayoutInflater

原创 Fragment啓動過程,從getFragmentManager開始

概述 時至今日,Fragment已經成爲Android開發中應用最廣泛的方案了,幾乎每一個APP都離不開它的影子。爲了更深入的理解其中原理,我們從Fragment中源碼開始分析。這裏我們選擇V4包中的Fragment來進行分析。 爲了在

原创 RxJava2.0中just操作符用法和源碼分析(二)

just基本使用 just是用來創建一個Observable來發射指定值,可以將任何對象轉化爲一個用來被髮射的ObservableSource數據。這個方法與fromArray相似,除了from會將數組或者Iterable中的元素逐個取出

原创 LinkedList源碼解析(jdk1.8)

概述 LinkedList實現了List接口,底層是基於雙向鏈表的結構實現的。相對於ArrayList的數組結構,它在執行插入和刪除操作時要比ArrayList更加高效,但是它的隨機訪問查找要比ArrayList遜色。 LinkedLis

原创 關於Android混淆文件統一管理

概述 對於學習Android開發的我們都知道,在發佈生產包時需要對項目開啓混淆,這樣可以避免項目代碼暴露在別人面前。而Android Studio在build.gradle文件配置上也非常貼心的提供了開啓代碼混淆的方式,開發者只要按照官方

原创 深入理解 Android 之 View 的繪製流程(三)_Layout

上篇介紹了ViewRootImpl調用View的測量操作,下面就開始介紹ViewRootImpl中的佈局操作了。我們還是從ViewRootImpl中的performLayout開始。 ViewRootImpl#performLayout