<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                本章將對壁紙的實現原理進行討論。在Android中,壁紙分為靜態與動態兩種。靜態壁紙是一張圖片,而動態壁紙則以動畫為表現形式,或者可以對用戶的操作作出反應。這兩種形式看似差異很大,其實二者的本質是統一的。它們都以一個Service的形式運行在系統后臺,并在一個類型為TYPE\_WALLPAPER的窗口上繪制內容。進一步講,靜態壁紙是一種特殊的動態壁紙,它僅在窗口上渲染一張圖片,并且不會對用戶的操作作出反應。因此本章將首先通過動態壁紙的實現討論Android壁紙的實現與管理原理,然后在對靜態壁紙的實現做介紹。 Android壁紙的實現與管理分為三個層次: - WallpaperService與Engine。同SystemUI一樣,壁紙運行在一個Android服務之中,這個服務的名字叫做WallpaperService。當用戶選擇了一個壁紙之后,此壁紙所對應的WallpaperService便會啟動并開始進行壁紙的繪制工作,因此繼承并定制WallpaperService是開發者進行壁紙開發的第一步。Engine是WallpaperService中的一個內部類,實現了壁紙窗口的創建以及Surface的維護工作。另外,Engine提供了可供子類重寫的一系列回調,用于通知壁紙開發者關于壁紙的生命周期、Surface狀態的變化以及對用戶的輸入事件進行響應。可以說,Engine類是壁紙實現的核心所在。壁紙開發者需要繼承Engine類,并重寫其提供的回調以完成壁紙的開發。這一層次的內容主要體現了壁紙的實現原理。 - WallpaperManagerService,這個系統服務用于管理壁紙的運行與切換,并通過WallpaperManager類向外界提供操作壁紙的接口。當通過WallpaperManagaer的接口進行壁紙的切換時,WallpaperManagerService會取消當前壁紙的WallpaperService的綁定,并啟動新壁紙的WallpaperService。另外,Engine類進行窗口創建時所使用的窗口令牌也是由WallpaperManagerService提供的。這一層次主要體現了Android對壁紙的管理方式。 - WindowManagerService,用于計算壁紙窗口的Z序、可見性以及為壁紙應用窗口動畫。壁紙窗口(TYPE\_WALLPAPER)的Z序計算不同于其他類型的窗口。其他窗口依照其類型會有固定的mBaseLayer以及mSubLayer,并結合它們所屬的Activity的順序或創建順序進行Z序的計算,因此這些窗口的Z序相對固定。而壁紙窗口則不然,它的Z序會根據FLAG\_SHOW\_WALLPAPER標記在其它窗口的LayoutParams.flags中的存在情況而不斷地被調整。這一層次主要體現了Android對壁紙窗口的管理方式。 本章將通過對動態壁紙切換的過程進行分析揭示WallpaperService、Engine以及WallpaperManagerService三者的實現原理以及協作情況。靜態壁紙作為動態壁紙的一種特殊情況,將會在完成動態壁紙的學習之后于8.3節進行討論。而WindowManagerService對壁紙窗口的處理將在8.4節進行介紹。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看