我正在努力在 android 中制作自定义启动器。我已经提到了 android 的 Jellybean 启动器的代码。现在我想在这个启动器中做一些修改。
我想要什么:我们知道默认有五个工作区屏幕,我想在任何一个工作区屏幕中添加自定义 View 。我的 xml 文件应该在任何一个屏幕上膨胀。
我已经尝试了很多方法来做到这一点,但由于默认启动器代码非常复杂,仍然没有运气找到它的方法。
已有应用名为 SOHO在 Playstore 中做我想要的。我已经添加了截图来引用我想要的内容。
如果你们中的任何人有任何想法,请帮助我。
最佳答案
我给你答案。您可以在 (AOSP) 的 Launcher2
和 Launcher3
包中执行此操作。 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/