将Launcher2主界面背景设为墙纸

来源:互联网 发布:三菱plc报警怎么编程 编辑:程序博客网 时间:2024/04/28 03:11

将launcher2主界面设置为待机墙纸,现在只做到了和待机静态墙纸一致,动态的目前暂没有实现。可以在Launcher.java里的private void setWorkspaceBackground(boolean workspace) 函数里,增加如下代码:

        {            View layout = mAppsCustomizeTabHost.getContent();                // 获取壁纸管理器              WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);              // 获取当前壁纸              Drawable wallpaperDrawable = wallpaperManager.getDrawable();              // 将Drawable,转成Bitmap              Bitmap bm = ((BitmapDrawable) wallpaperDrawable).getBitmap();              // 需要详细说明一下,<span style="font-family: Arial, Helvetica, sans-serif;">pageCount</span><span style="font-family: Arial, Helvetica, sans-serif;">、getCurrentWorkspaceScreen()、ScreenWidth、ScreenHeight分别  </span>            //对应于Launcher中的桌面屏幕总数、当前屏幕下标、屏幕宽度、屏幕高度.            float step = 0;              DisplayMetrics dm = new DisplayMetrics();            //获取屏幕信息            getWindowManager().getDefaultDisplay().getMetrics(dm);            int screenWidth = dm.widthPixels;            int screenHeigh = dm.heightPixels;            int pageCount;            if (mWorkspace != null)             {                pageCount =  mWorkspace.getPageCount();            }             else             {                pageCount = SCREEN_COUNT;            }            // 计算出屏幕的偏移量              step = (bm.getWidth() - screenWidth)/ (pageCount-1);              Log.d(TAG, "screenWidth="+screenWidth+";screenHeigh="+screenHeigh+";pageCount="+pageCount+";CurrentWorkspaceScreen="+getCurrentWorkspaceScreen());            // 截取相应屏幕的Bitmap              Bitmap pbm = Bitmap.createBitmap(bm, (int)(getCurrentWorkspaceScreen()*step), 0,screenWidth,screenHeigh);              // 设置 背景              layout.setBackgroundDrawable(new BitmapDrawable(pbm));              }  


0 0