天天看點

【進階android】ListView源碼分析——總述

         縱觀android所提供的原生控件,ListView無疑是最受矚目的控件之一;而如今的android項目,能不涉及到ListView的幾乎沒有;加之前段時間的幾次面試,對ListView的問題不僅僅停留到如何使用,如何優化,更是涉及到其原理;是以,筆者便有了通過其源碼進行學習的沖動;然而,ListView的源碼接近4000行(android4.4.2)其父類AbsListVIew的源碼更是有7200多行之多,是以要将其完全吃透,并非一日之功。

        最開始分析ListView的目的是在于,ListView是一個ViewGroup,是以通過其源碼對onMeasure、onlayout及onDraw三大方法有一定的認知;此外,ListView的視圖重用機制、适配者模式及觀察者模式都深深的吸引着筆者;最後也想從源碼級來分析ListView的相關優化。

       而在大緻浏覽源碼(android4.4.2)一遍後,筆者打算從一下5個方面來學習ListView源碼:

       1、擴充卡及觀察者;每一個ListVIew都從setAdapter方法開始它的經典,【進階android】ListView源碼分析——擴充卡及觀察者模式;

       2、onMeasure、onlayout及onDraw三大方法;看看一個ViewGroup的執行個體,【進階android】ListView源碼分析——布局三大方法;

       3、ListView的填充方式;此點算是第二點的一個補充,我們将以ListVIew.layoutChildren方法為入口,【進階android】ListView源碼分析——子視圖的七種填充方式;

       4、ListView的重用視圖,以ListView.makeAndAddView方法為入口,【進階android】ListView源碼分析——ListView的重用視圖機制;

       5、ListView的滑動機制,以AbsLIstView.onTouchEvent方法為入口,【進階android】ListView源碼分析——ListView的滾動機制;