如何在Android的JellyBean Launcher中添加自定义视图

我正在努力在Android中制作自定义启动器。我已经参考了Android的Jellybean启动器的代码。现在我想在这个启动器中做一些修改。

我想要的 :众所周知,默认有五个工作区屏幕,我想在任何一个工作区屏幕中添加自定义视图。我的xml文件应该在任何一个屏幕中膨胀。

我已经尝试了很多方法来做到这一点,但是由于默认的启动器代码非常复杂,仍然没有运气找到它的方法。

在Playstore中已经有名为SOHO的应用程序正在做我想要的。我已经添加了屏幕截图以引用我想要的内容。

如果你们中的任何人有任何想法,请帮助我。

enter image description here


答案 1

我有答案给你。您可以在 (AOSP) 中和从 (AOSP) 中执行此操作。果冻豆正在使用可能是。我个人建议你去,它有更好的方式这样做。Launcher2Launcher3Launcher2Launcher3

启动器3:

创建一个扩展该类并重写必要方法的类,如下所示:com.android.launcher3.Launcher

public class MyLauncher extends Launcher {


    @Override
    protected boolean hasCustomContentToLeft() {
        return true;
    }


    @Override
    protected void addCustomContentToLeft() {
        View customView = getLayoutInflater().inflate(R.layout.custom, null);

        CustomContentCallbacks callbacks = new CustomContentCallbacks() {

            @Override
            public void onShow() {}

            @Override
            public void onScrollProgressChanged(float progress) {}

            @Override
            public void onHide() {}
        };


        addToCustomContentPage(customView, callbacks, "custom view");
    }

}

下面是所需的自定义视图。然后在清单文件中将启动器活动类从 更改为 。就是这样。R.layout.customLauncherMyLauncher

启动器2:

在创建以下方法中:Workspace.java

public void addCustomView(View child){
   CellLayout layout = (CellLayout) getChildAt(0);
   layout.addView(child);
}

然后在 中,找到以下行:Launcher.java

mWorkspace = (Workspace) mDragLayer.findViewById(R.id.workspace);

然后将以下代码粘贴到该行之后的某个位置:

View child = LayoutInflater.from(this).inflate(R.layout.custom, null);
mWorkspace.addCustomView(child);

答案 2

如果我没记错的话,你只需要实现一个显示家庭启动器的标准活动。在清单中.xml您只需要像这样定义它:

<activity android:name=".YourLauncher" android:label="@string/launcher_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

推荐