首页 > 代码库 > android 如何让主菜单的背景显示为壁纸

android 如何让主菜单的背景显示为壁纸

ICS/ICS2:
1、请修改 packages\apps\Launcher2\res\layout\apps_customize_pane.xml
<com.android.launcher2.AppsCustomizeTabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
    android:background="#00000000">  // 原值为#FF000000
 
2、请修改packages\apps\Launcher2\src\com\android\launcher2\Launcher.java的hideAppsCustomizeHelper(boolean animated, final boolean springLoaded)方法,如下:
......
setPivotsForZoom(fromView, scaleFactor);
updateWallpaperVisibility(true);
showHotseat(animated);
if(mDockDivider != null) { // add
    mDockDivider.setVisibility(View.VISIBLE); // add
} // add
......
 
3、请修改Launcher.java的showAppsCustomizeHelper(boolean animated, final boolean springLoaded) 方法,如下:
......
// Shrink workspaces away if going to AppsCustomize from workspace  
mWorkspace.changeState(Workspace.State.SMALL, animated); 
// and hide hotseat and dock divider
hideHotseat(false); // add
if(mDockDivider != null) {// add
    mDockDivider.setVisibility(View.INVISIBLE); // add
}// add
if(mWorkspace != null) {// add
    mWorkspace.setVisibility(View.INVISIBLE);// add
}// add
......
 
4、请修改Launcher.java 文件,将showAppsCustomizeHelper(boolean animated, final boolean springLoaded)方法中出现的两处updateWallpaperVisibility(false);注释掉
第一处是在此函数内的 public void onAnimationEnd(Animator animation) 方法的最后
第二处是在showAppsCustomizeHelpe方法的最后
 
5、请修改Launcher.java的enterSpringLoadedDragMode()方法,如下:
    void enterSpringLoadedDragMode() {
        if (mState == State.APPS_CUSTOMIZE) {
            mWorkspace.setVisibility(View.VISIBLE); // add
            mWorkspace.changeState(Workspace.State.SPRING_LOADED);
            hideAppsCustomizeHelper(true, true);
            hideDockDivider();
            mState = State.APPS_CUSTOMIZE_SPRING_LOADED;
        }
    }
 
ICS/ICS2 版本按照以上修改即可,如果是JB版本需要在以上修改的基础上加入如下修改:
 
6、请修改Launcher.java 中disableWallpaperIfInAllApps() 方法,如下:
void disableWallpaperIfInAllApps() {
        // Only disable it if we are in all apps
        if (isAllAppsVisible()) {
            if (mAppsCustomizeTabHost != null &&
                    !mAppsCustomizeTabHost.isTransitioning()) {
                updateWallpaperVisibility(true); // modify            }
        }
    }


7、请修改packages\apps\Launcher2\res\layout\apps_customize_pane.xml中id 为 animation_buffer 的这个控件, 将其 android:background 设置为 #0000000
 
如果JB2/JB3 的版本还需要在以上修改的基础上加入如下修改:
 
8、请修改Launcher.java的onResume()方法:
将setWorkspaceBackground(mState == State.WORKSPACE);
修改为
setWorkspaceBackground(true);
 
修改了第7步之后, 在切换 widget 及 app 的时候, 可能会短时间的看到 widget 与 app 相叠加的画面。
这是 appsCustomizeTabHost.java 的 onTabChanged 方法内的 animSet.playTogether(outAnim, inAnim); 所指定的效果,可以自行修改。

android 如何让主菜单的背景显示为壁纸