我正在制作Android中的自定义启动器。我已经引用了Android的Jellybean启动器的代码。现在,我想在此启动器中进行一些修改。
我想要的是:我们知道有五个默认的工作区屏幕,我想在任何一个工作区屏幕中添加自定义 View 。我的xml文件应在任一屏幕中放大。
我已经尝试了许多方法来执行此操作,但是由于默认的启动器代码非常复杂,因此仍然无法找到解决方法。
Playstore中已经有一个名为SOHO的应用程序可以完全满足我的需求。我已经添加了屏幕截图以引用我想要的内容。
如果您有任何想法请帮助我。
最佳答案
我给你答案。您可以从(AOSP)的Launcher2
和Launcher3
包中完成此操作。 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);