android中launcher工做機制介紹

Launcher應用程序列表內容讀取過程

       Launcher從onCreate函數開始執行,初始化了一些變量,調用mModel.startLoader函數進行讀取工做,LauncherModel中定義了一個Loader類,該類負責讀取應用程序信息,Loader類建立一個線程LoaderThread來進行數據庫的讀取操做,LoaderThread中調用loadAndBindWorkspace函數實現了從數據庫中讀取桌面上應用程序信息,根據快捷方式、組件和文件夾區分開來存儲在不一樣的列表中,bindWorkspace函數用來將已經存儲的列表賦給Launcher對象,同時在Workspace中添加並顯示這些視圖對象。loadAndBindAllApps函數用來讀取全部安裝的應用程序信息存入列表中,並將當前列表賦給Launcher中的AllAppsView對象。數據庫

2、Launcher中桌面的滾動函數

       在桌面上,若是當前的事件是拖動事件,Workspace使用Scroller根據當前的移動的位置及距離進行桌面的移動效果。spa

3、Launcher桌面的點擊事件線程

      首先判斷當前所點擊的位置放置的是什麼東西,若是是快捷方式則啓動當前快捷方式所表明的應用程序,若是是文件夾則顯示當前文件夾中存在的內容,若是是全部應用程序列表按鈕,則顯示全部的應用程列表,其餘狀況則不進行處理。對象

4、Launcher中的長按事件接口

      若是當前長按的是桌面,則彈出添加到桌面對話框,若是有應用程序快捷方式,則根據當前的應用程序快捷方式建立一個DragView對象,當有移動事件時,移動當前的DragView對象,在拖動開始時刪除區域會顯示出來(DeleteZone設置爲可見),當將圖標拖入刪除區域時,刪除區域及DragView對象的背景顏色會改變,在刪除區域中鬆開手能夠實現將當前快捷方式從桌面上刪除,圖標離開刪除區域時刪除區域及DragView對象的背景會恢復成原來的樣子。 在應用程序列表中,長按某個應用程序,則會關閉掉當前的應用程序列表,之後的拖動事件處理和在桌面上拖動應用程序快捷方式的效果是同樣的。若是當前長按的是已打開文件夾的名字,則彈出更改文件夾名字對話框(以下圖)。事件

5、Launcher中的拖動應用程序圖標效果it

      Launcher中使用WindowManager進行應用程序快捷方式的拖動。整個Android的窗口機制是基於WindowManager的,這個接口能夠添加View到屏幕,也能夠從屏幕刪除一個View,它面向的一端是屏幕,另外一端是View,直接忽略了Activity或者Dialog等東西,WindowManager是全局的。附件是我寫的一個例子。  變量

相關文章
相關標籤/搜索