Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android4.4 應用分析——修改Launcher3應用以適應單屏壁紙

Android4.4 應用分析——修改Launcher3應用以適應單屏壁紙

編輯:關於Android編程

Launcher3壁紙的規格默認是:壁紙高度=屏幕高度,壁紙寬帶=屏幕寬度*2倍

Android4.4的壁紙信息存放在/data/system/users/0/目錄下,WallpaperManagerService啟動後,會生成如下兩個文件在/data/system/users/0/目錄下:

 

    static final String WALLPAPER = wallpaper;   //設置的壁紙圖片,一般為jpeg格式
    static final String WALLPAPER_INFO = wallpaper_info.xml;    //包含牆紙的規格信息:高、寬

Wallpaper_info.xml的解析可以查看WallpaperManagerService的loadSettingsLocked()方法。下面是WallpaperManagerService的啟動時序圖,不解釋了,用的上朋友可以對著查看源碼:

 

\

下面我們就應該在Launcher3裡將壁紙的高、寬信息寫入上面說的wallpaper_info.xml文件中(當然時機寫入動作還是在Framework中),Launcher3只是將其自身需要的牆紙高、寬寫入wallpaper_info.xml,你使用Go桌面,那肯定是在Go桌面設置高、寬了。

1. 找對位置後很簡單,就是Launcher3的WallpaperCropActivity.java文件getDefaultWallpaperSize()。

 

    static protected Point getDefaultWallpaperSize(Resources res, WindowManager windowManager) {
        Point minDims = new Point();
        Point maxDims = new Point();
        windowManager.getDefaultDisplay().getCurrentSizeRange(minDims, maxDims);

        int maxDim = Math.max(maxDims.x, maxDims.y);
        int minDim = Math.max(minDims.x, minDims.y);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
            Point realSize = new Point();
            windowManager.getDefaultDisplay().getRealSize(realSize);
            maxDim = Math.max(realSize.x, realSize.y);
            minDim = Math.min(realSize.x, realSize.y);
        }

        // We need to ensure that there is enough extra space in the wallpaper
        // for the intended
        // parallax effects
        final int defaultWidth, defaultHeight;
        if (isScreenLarge(res)) {
            defaultWidth = (int) (maxDim * wallpaperTravelToScreenWidthRatio(maxDim, minDim));
            defaultHeight = maxDim;
        } else {
            defaultWidth = Math.max((int) (minDim * WALLPAPER_SCREENS_SPAN), maxDim);
            defaultHeight = maxDim;
        }
        return new Point(defaultWidth, defaultHeight);
    }

defaultWidth和defaultHeight分別賦值為屏幕的寬、高就行了。

 

 

2. cropImageAndSetWallpaper()方法,這個方法應該是設置牆紙時,按牆紙規格裁剪圖片用到的,該法與上面一樣。

 

3. 阻止Launcher3滑屏時,滑動牆紙:在Workspace.java中,注釋updateOffset()方法的調用(有兩處)。

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved