• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            life02

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              197 隨筆 :: 3 文章 :: 37 評論 :: 0 Trackbacks
            http://gqdy365.iteye.com/blog/861047


            本博文主要參考網絡資料,希望對各位正在修改launcher的有幫助:
            Home screen可以說是一個手機的最重要應用,就像一個門戶網站的首頁,直接決定了用戶的第一印象。下面對home screen做一簡要分析。

            home screen的代碼位于packages/apps/Launcher目錄。從文件launcher.xml,workspace_screen.xml可獲知home screen的UI結構如下圖所示:



            整個homescreen是一個包含三個child view的FrameLayout(com.android.launcher.DragLayer)。

            第一個child就是桌面com.android.launcher.Workspace。這個桌面又包含三個child。每個child就對應 一個桌面。這就是你在Android上看到的三個桌面。每個桌面上可以放置下列對象:應用快捷方式,appwidget和folder。

            第二個child是一個SlidingDrawer控件,這個控件由兩個子控件組成。一個是 com.android.launcher.HandleView,就是Android桌面下方的把手,當點擊這個把手時,另一個子控 件,com.android.launcher.AllAppsGridView就會彈出,這個子控件列出系統中當前安裝的所有類型為 category.launcher的Activity。

            第三個child是com.android.launcher.DeleteZone。當用戶在桌面上長按一個widget時,把手位置就會出現一個垃圾桶形狀的控件,就是這個控件。

            在虛擬桌面上可以擺放四種類型的對象:
            1. ITEM_SHORTCUT,應用快捷方式
            2. ITEM_APPWIDGET,app widget
            3. ITEM_LIVE_FOLDER,文件夾
            4. ITEM_WALLPAPER,墻紙。

            類AddAdapter(AddAdapter.java)列出了這四個類型對象。當用戶在桌面空白處長按時,下列函數序列被執行:
            Launcher::onLongClick -->
            Launcher::showAddDialog -->
            Launcher::showDialog(DIALOG_CREATE_SHORTCUT); -->
            Launcher::onCreateDialog -->
            Launcher::CreateShortcut::createDialog:這個函數創建一個彈出式對話框,詢問用戶是要添加什么(快捷方式,appwidget, 文件夾和墻紙)其內容就來自AddAdapter。

            類Favorites(LauncherSettings.java)和類LauncherProvider定義了一個content provider,用來存儲桌面上可以放置的幾個對象,包括shortcut, search和clock等。

            類DesktopItemsLoader負責將桌面上所有的對象從content provider中提取。

            線程private ApplicationsLoader mApplicationsLoader負責從包管理器中獲取系統中安裝的應用列表。(之后顯示在AllAppsGridView上)。ApplicationsLoader::run實現:
            1)通過包管理器列出系統中所有類型為Launcher,action為MAIN的activity;
            2)對每一個Activity,
                  a) 將Activity相關元數據信息,如title, icon, intent等緩存到appInfoCache;
                  b) 填充到ApplicationsAdapter 中。填充過程中用到了一些小技巧,每填充4(UI_NOTIFICATION_RATE)個activity更新一下相應view。

            在Launcher::onCreate中,函數startLoaders被調用。而該函數接著調用loadApplications和loadUserItems,分別獲取系統的應用列表,以及顯示在桌面上的對象列表(快捷方式,appwidget,folder等)。

            Launcher上排列的所有應用圖標由AllAppsGridView對象呈現。這個對象是一個GridView。其對應的Adapter是 ApplicationsAdapter,對應的model則是ApplicationInfo數組。數組內容是由ApplicationsLoader 裝載的。
            private class ApplicationsLoader implements Runnable。

            posted on 2012-02-27 23:16 life02 閱讀(400) 評論(0)  編輯 收藏 引用 所屬分類: laucher開發(轉載)
            亚洲欧美成人久久综合中文网 | 性高湖久久久久久久久AAAAA| 久久精品国产精品青草app| 99热精品久久只有精品| 免费久久人人爽人人爽av| 久久久久亚洲av无码专区导航| 99久久国产综合精品网成人影院| 一本久道久久综合狠狠躁AV| 亚洲第一极品精品无码久久| 久久久WWW成人免费精品| 亚洲AV日韩AV永久无码久久 | 久久婷婷五月综合国产尤物app | 久久精品中文字幕大胸| 日本道色综合久久影院| 久久国语露脸国产精品电影| 精品一区二区久久| 亚洲AV日韩精品久久久久久| 久久久久亚洲AV成人网人人网站| 午夜久久久久久禁播电影| 亚洲国产成人精品无码久久久久久综合| 久久夜色精品国产噜噜亚洲AV | 亚洲熟妇无码另类久久久| 久久人人爽人人爽人人片AV麻豆| 99久久人妻无码精品系列蜜桃| 亚洲午夜精品久久久久久浪潮| 嫩草影院久久99| 国产一久久香蕉国产线看观看| 无码精品久久久久久人妻中字| 欧美精品丝袜久久久中文字幕| 国产精品久久久久乳精品爆| 久久成人国产精品二三区| AV色综合久久天堂AV色综合在 | 午夜精品久久久久久影视riav| 久久久久黑人强伦姧人妻| 一本大道加勒比久久综合| 伊人久久综在合线亚洲2019| 久久精品成人免费看| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久婷婷色综合一区二区| 欧美国产成人久久精品| 亚洲精品久久久www|