1. 程式人生 > >Android Launcher分析和修改4——初始化載入資料

Android Launcher分析和修改4——初始化載入資料

 
private void bindWorkspace() {

       //通知Launcher開始繫結資料 mHandler.post(new Runnable() { public void run() { Callbacks callbacks = tryGetCallbacks(oldCallbacks); if (callbacks != null) { //繫結資料到launcher,Launcher回撥,清空相關容器 OWL
callbacks.startBinding(); } } }); //新增元素到workspace,主要是新增APP快捷方式 N = workspaceItems.size(); for (int i=0; i<N; i+=ITEMS_CHUNK) { final int start = i; final
int chunkSize = (i+ITEMS_CHUNK <= N) ? ITEMS_CHUNK : (N-i); mHandler.post(new Runnable() { public void run() { Callbacks callbacks = tryGetCallbacks(oldCallbacks); if (callbacks != null) { callbacks.bindItems(workspaceItems, start, start
+chunkSize); } } }); } //資料夾繫結 final HashMap<Long, FolderInfo> folders = new HashMap<Long, FolderInfo>(sFolders); mHandler.post(new Runnable() { public void run() { Callbacks callbacks = tryGetCallbacks(oldCallbacks); if (callbacks != null) { callbacks.bindFolders(folders); } } }); //分兩次載入widget ,當前介面和其他介面,增強使用者體驗OWL
     //其他頁面widget會在後臺執行緒再次載入 final int currentScreen = oldCallbacks.getCurrentWorkspaceScreen(); N = sAppWidgets.size(); // once for the current screen for (int i=0; i<N; i++) { final LauncherAppWidgetInfo widget = sAppWidgets.get(i); if (widget.screen == currentScreen) { mHandler.post(new Runnable() { public void run() { Callbacks callbacks = tryGetCallbacks(oldCallbacks); if (callbacks != null) { callbacks.bindAppWidget(widget); } } }); } } //載入其他看不見的螢幕widget for (int i=0; i<N; i++) { final LauncherAppWidgetInfo widget = sAppWidgets.get(i); if (widget.screen != currentScreen) { mHandler.post(new Runnable() { public void run() { Callbacks callbacks = tryGetCallbacks(oldCallbacks); if (callbacks != null) { callbacks.bindAppWidget(widget); } } }); } } //載入完成,通知Launcher,已經完成資料載入 mHandler.post(new Runnable() { public void run() { Callbacks callbacks = tryGetCallbacks(oldCallbacks); if (callbacks != null) { callbacks.finishBindingItems(); } } }); }

相關推薦

Android Launcher分析修改4——初始載入資料

private void bindWorkspace() {       //通知Launcher開始繫結資料 mHandler.post(new Runnable() { public void run() {

Android Launcher分析修改3 Launcher啟動初始

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android Launcher分析修改3——Launcher啟動初始

@Override protected void onCreate(Bundle savedInstanceState)   { super.onCreate(savedInstanceState); //獲取Application 例項 La

Android Launcher分析修改1——Launcher預設介面配置(default_workspace)

//Edited by mythou // //傳入default_workspace檔案的資源ID和資料庫實力,把xml裡面資料解析,儲存到Launcher資料庫。返回總共解析了多少個標籤。 private int loadFavorites(SQLiteDatabase db, int workspa

Android Launcher分析修改13——實現Launcher編輯模式(1) 桌布更換

  已經很久沒更新Launcher系列文章,今天不分析原始碼,講講如何在Launcher裡面新增桌面設定的功能。目前很多第三方Launcher或者定製Rom都有簡單易用的桌面設定功能。例如小米MIUI的Launcher就有很豐富編輯功能。今天開始會講一下如何實現桌面編輯功能。網上對於實現Launcher一些編

Android Launcher分析修改2——Icon修改、介面佈局調整、桌布設定

<!-- Workspace cell size --> <dimen name="workspace_cell_width_land">88dp</dimen> <dimen name="workspace_cell_width_port">

Android Launcher分析修改8——AllAPP介面拖拽元素(PagedViewWithDraggableItems)

  接著上一篇文章,繼續分析AllAPP列表介面。上一篇文章分析了所有應用列表的介面構成以及如何通過配置檔案修改屬性。今天主要是分析PagedViewWithDraggableItems類,因為在我們分析AppsCustomizePagedView之前,需要先了解PagedViewWithDraggableI

Android Launcher分析修改7——AllApp全部應用列表(AppsCustomizeTabHost)

  今天主要是分析一下Launcher裡面的所有應用列表。Android4.0 Launcher的所有應用列表跟2.X比較大的區別就是多了Widget的顯示。下面會詳細分析Launcher裡面有關所有應用列表配置和程式碼分析。   1、AllApp列表配置檔案 配置AllAPP應用列表介面的配置檔案

Android Launcher分析修改11——自定義分頁指示器(paged_view_indicator)

  Android4.0的Launcher自帶了一個簡單的分頁指示器,就是Hotseat上面那個線段,這個本質上是一個ImageView利用.9.png圖片做,效果實在是不太美觀,用測試人員的話,太醜了。特別是搭配其他風格的圖示和背景,的確不好看。所以打算自己重新寫一個指示器。這個所謂的分頁指示器作用很簡單,

Android Launcher分析修改6——頁面滑動(PagedView)

public boolean onTouchEvent(MotionEvent ev) { if(OWL_DEBUG) Log.d(OWL, "onTouchEvent entering..");      //........switch (action &

Android Launcher分析修改10——HotSeat深入進階

  void addInScreen(View child, long container, int screen, int x, int y, int spanX, int spanY, boolean insert) { if(OWLLaunche

Android Launcher分析修改9——Launcher啟動APP流程

  本來想分析AppsCustomizePagedView類,不過今天突然接到一個臨時任務。客戶反饋說機器介面的圖示很難點選啟動程式,經常點選了沒有反應,Boss說要優先解決這問題。沒辦法,只能看看是怎麼回事。今天分析一下Launcher啟動APP的過程。從使用者點選到程式啟動的流程,下面針對WorkSpac

Android Launcher分析修改5——HotSeat分析

void resetLayout() {    //清空原來的內容 mContent.removeAllViewsInLayout(); //新增AllAPP按鈕,也是一個BubbleTextView物件 Context context = g

Android Launcher分析修改12——Widget列表資訊收集

public void syncWidgetPageItems(final int page, final boolean immediate) { int numItemsPerPage = mWidgetCountX * mWidgetCountY; //

android launcher開發(3)初始介面

初始化執行環境 LauncherAppState.setApplicationContext(getApplicationContext()); LauncherAppState app = LauncherAppState.getIns

SVN配置使用者許可權以及初始匯入資料

 4,配置使用者和許可權svn的許可權管理涉及到一下檔案:passwd檔案   --   /conf目錄下   用於存放本svn庫的使用者名稱和密碼,用 = 分割,左邊是使用者名稱,右邊是密碼(明文)。authz   --   /conf目錄下   用於存放本svn庫的訪問授

Android wpa_supplicant原始碼分析--啟動之全域性初始

1. wpa_supplicant簡介 wpa_supplicant是用來用來支援無線中各種加密方式的,包括WEP、WPA/WPA2和WAPI(中國特有)、EAP(8021x)。wpa_s通過socket與上層(framework)和底層(driver)通訊,向上接收命令和傳

從原理分析Kotlin的延遲初始: lateinit varby lazy

Koltin中屬性在宣告的同時也要求要被初始化,否則會報錯。例如以下程式碼:private var name0: String //報錯 private var name1: String = "xiaoming" //不報錯 private var name2: String? = null //不報錯  

Lighttpd1.4.20原始碼分析 筆記 fdevent系統-初始

C程式在進行真正的編譯之前都要進行預編譯。 我們看看fdevent系統中的一些巨集: #if defined(HAVE_EPOLL_CTL) && defined(HAVE_SYS_EPOLL_H) # if defined HAVE_STD

Android百度地圖SDK 導航初始地圖初始引起的衝突

       如題,同樣是百度地圖SDK開發過程中遇到的一個問題,交代下背景:        開發了一款內嵌百度地圖的應用,因此裡面差不多將目前百度地圖SDK開放的主要功能都用到了,定位,地圖顯示,覆蓋物標示,POI搜尋,行程路線規劃,GPS導航。。等等都有。開發最開始用到