原创 Android View原理解析之佈局流程(layout)

提示:本文的源碼均取自Android 7.0(API 24) 前言 自定義View是Android進階路線上必須攻克的難題,而在這之前就應該先對View的工作原理有一個系統的理解。本系列將分爲4篇博客進行講解,本文主要對View的佈局

原创 Android View原理解析之測量流程(measure)

提示:本文的源碼均取自Android 7.0(API 24) 前言 自定義View是Android進階路線上必須攻克的難題,而在這之前就應該先對View的工作原理有一個系統的理解。本系列將分爲4篇博客進行講解,本文主要對View的測量

原创 Android View原理解析之繪製流程(draw)

提示:本文的源碼均取自Android 7.0(API 24) 前言 自定義View是Android進階路線上必須攻克的難題,而在這之前就應該先對View的工作原理有一個系統的理解。本系列將分爲4篇博客進行講解,本文主要對View的繪製

原创 Android LayoutParams詳解

提示:本文的源碼均取自Android 7.0 前言 在平時的開發過程中,我們一般是通過XML文件去定義佈局,所以對於LayoutParams的使用可能相對較少。但是在需要動態改變View的佈局參數(比如寬度、位置)時,就必須要藉助這個

原创 Android RecyclerView瀑布流中Item寬度異常的問題(源碼分析)

問題描述 通過RecyclerView配合StaggeredGridLayoutManager可以很方便的實現瀑布流效果,一般情況下會把作爲Item的子View寬度設置爲MATCH_PARENT,那麼子View將根據列數(假定是垂直排

原创 詳解ContentProvider的使用

前言 在Android中,應用間的數據共享是一件很常見的事情,典型的場景就是讀取手機通訊錄。爲了實現安全高效地數據共享,Android提供了ContentProvider這一組件,即內容提供器。本文就簡單講解一下ContentProvid

原创 Android UI ListView講解

前言 在Android系統中,針對大量數據的展示,可以使用ListView以列表的形式的呈現。雖然現在ListView在很多地方都被RecyclerView取代了,但是在一些合適的場景中依舊有用武之地。本文將詳細講解ListView的使用

原创 Android UI RecyclerView講解

前言 RecyclerView是Android 5.0之後推出的列表類控件,具有高度的解耦性和靈活性。通過使用合適的LayoutManager,可以實現ListView、橫向ListView、GridView和瀑布流列表的效果。本文將對R

原创 Android自定義View之FairySearchView(靈活的通用搜索控件)

1.概述 FairySearchView是經過封裝的通用搜索控件,可以根據需求切換不同的佈局模式。內置多種事件監聽器,可以滿足不同場景的業務需求,使用方式非常靈活。 2.效果預覽 顯示所有控件(無輸入內容) 顯示所有控件(有輸入內容

原创 主項目和Module包名相同造成的編譯錯誤(DexException: Multiple dex files define)

1.場景描述 在項目中新建了Module並引用,結果在編譯時出現了錯誤,錯誤信息如下: Error:Error converting bytecode to dex: Cause: com.android.dex.DexException

原创 Android UI GridView講解

前言 GridView常用於以網格形式展示數據,九宮格佈局就是一種典型的應用。本文將詳細講解GridView的使用方法和常用技巧。 基本使用 GridView的使用和ListView相似,重點在於數據由Adapter(適配器)提供,Gri

原创 詳解Android權限機制

前言 權限是Android中一個非常重要的組成部分,許多操作都需要獲取到權限才能進行。在Android6.0之後,權限機制發生了重大變化,加入了運行時權限這一概念。本文就詳細講解一下Android6.0前後的權限機制。 Android6.

原创 Android自定義View之PopupLayout(通用彈出式佈局)

1.概述 PopupLayout是通用彈出佈局輔助庫,允許開發者從頂部、底部、左側、右側和中心這五個位置彈出自己指定的View,此外還提供圓角和動畫特性。 2.效果預覽 PS:本庫的更多效果可以參考Github上的Gif演示(Githu

原创 讀取手機聯繫人

前言 讀取手機聯繫人是Android應用中很常見的操作,也是很多應用的功能基礎,本文就簡單講解一下如何使用ContentResolver對手機聯繫人進行讀取。 主要代碼 邏輯部分 public class MainActivity ext

原创 Android UI 常用控件講解

前言 Android系統提供了種類繁多的控件,很多的用法都很簡單。但是由於控件的多樣性,偶爾也容易忘記控件的一些細節問題。因此,本文將總結、講解一些常用控件的用法和技巧。本文的內容包括:CheckBox、RadioButton、Toggl