我正在制作Android中的自定义启动器。我已经引用了Android的Jellybean启动器的代码。现在,我想在此启动器中进行一些修改。

我想要的是:我们知道有五个默认的工作区屏幕,我想在任何一个工作区屏幕中添加自定义 View 。我的xml文件应在任一屏幕中放大。

我已经尝试了许多方法来执行此操作,但是由于默认的启动器代码非常复杂,因此仍然无法找到解决方法。

Playstore中已经有一个名为SOHO的应用程序可以完全满足我的需求。我已经添加了屏幕截图以引用我想要的内容。

如果您有任何想法请帮助我。

最佳答案

我给你答案。您可以从(AOSP)的Launcher2Launcher3包中完成此操作。 bean 形软糖可能是使用Launcher2的。我个人建议您使用Launcher3,它具有内置的方式。

Launcher3:

创建一个扩展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.custom是您想要的自定义 View 。
然后在 list 文件中,将启动器 Activity 类从Launcher更改为MyLauncher。就是这样。

Launcher2:

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);

09-11 22:37