java - 如何在 android Jelly Bean Launcher 中添加自定义 View

标签 java android android-4.2-jelly-bean android-launcher

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

我想要什么:我们知道默认有五个工作区屏幕,我想在任何一个工作区屏幕中添加自定义 View 。我的 xml 文件应该在任何一个屏幕上膨胀。

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

已有应用名为 SOHO在 Playstore 中做我想要的。我已经添加了截图来引用我想要的内容。

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

enter image description here

最佳答案

我给你答案。您可以在 (AOSP) 的 Launcher2Launcher3 包中执行此操作。 Jellybean 是用 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);

关于java - 如何在 android Jelly Bean Launcher 中添加自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17141113/

相关文章:

java - 如何使用 RegExp 将一个字符串替换为另一个字符串,并且替换的字符串将包含第一个字符串的参数

java - 如何将我自己的 Android 应用程序项目导入到 IBM Bluemix 中?

java - 如何向上转换和使用子特定方法

java - Java(Android)遗留代码中的线程同步

android - Google App Engine 中的重复 sep_approx_spanish.txt 文件

android - 用于模拟器的 Intel Jelly Bean 图像

android - 当我在 Eclipse for Android 4.1 中将 "Plain Text"字段拖到我的 WYSIWYG 编辑器时,我遇到了 Java 崩溃 - 我该如何解决这个问题?

java - JMH:不考虑内部方法时间

android - 缓存静态 map 服务器端以用于移动应用程序?