Android Launcher3 - Google即时页面

时间:2014-01-31 16:39:10

标签: java android eclipse android-fragments android-launcher

我从4.4来源下载了Launcher3(Google的Kitkat Launcher)。

我把它导入了eclipse。我摆脱了错误。我的发射器工作得很好。

但缺少一些东西。滚动到左侧时“GOOGLE NOW”页面。

我现在无法激活谷歌。不管怎样,我不需要那个。我想将自己的片段或布局放入第一页,其他页面将像普通启动器一样工作。 就像Google的体验Launcher(谷歌的Kitkat Launcher)的Google即时页面一样..

像这样: enter image description here

我添加了这样的布局:

这是来自workspace.java的原始代码

  public long insertNewWorkspaceScreen(long screenId, int insertIndex) {
    if (mWorkspaceScreens.containsKey(screenId)) {
        throw new RuntimeException("Screen id " + screenId + " already exists!");
    }

    CellLayout newScreen = (CellLayout)
            mLauncher.getLayoutInflater().inflate(R.layout.workspace_screen, null);

    newScreen.setOnLongClickListener(mLongClickListener);
    newScreen.setOnClickListener(mLauncher);
    newScreen.setSoundEffectsEnabled(false);
    mWorkspaceScreens.put(screenId, newScreen);
    mScreenOrder.add(insertIndex, screenId);
    addView(newScreen, insertIndex);
    return screenId;
}

这是我在workspace.java上编辑的代码

      public long insertNewWorkspaceScreen(long screenId, int insertIndex) {
        if (mWorkspaceScreens.containsKey(screenId)) {
            throw new RuntimeException("Screen id " + screenId + " already exists!");
        }
if (screenId == 2) //Firstscreen/page
{

 RelativeLayout newScreen = (RelativeLayout)
                mLauncher.getLayoutInflater().inflate(R.layout.blinkfeed, null);

        newScreen.setOnClickListener(mLongClickListener);
        newScreen.setOnClickListener(mLauncher);
        newScreen.setSoundEffectsEnabled(false);
     //   mWorkspaceScreens.put(screenId, newScreen);
        mScreenOrder.add(insertIndex, screenId);
        addView(newScreen, insertIndex);
        return screenId;

}
else
{
        CellLayout newScreen = (CellLayout)
                mLauncher.getLayoutInflater().inflate(R.layout.workspace_screen, null);

        newScreen.setOnLongClickListener(mLongClickListener);
        newScreen.setOnClickListener(mLauncher);
        newScreen.setSoundEffectsEnabled(false);
        mWorkspaceScreens.put(screenId, newScreen);
        mScreenOrder.add(insertIndex, screenId);
        addView(newScreen, insertIndex);
        return screenId;
}
    }

正如你可以看到我的第一页改变了布局,但我在儿童视图,动画等方面遇到了问题, 无论如何我甚至无法访问其他页面。 当我因为“celllayout无法绑定到相对bla bla ...”而出现错误时,我把它推到了任何地方尝试捕捉。

我尝试抓住这个

try
{
cell layout stuff its trying to make animations etc.
}
catch (Exception e)
{
//empty
}

我现在无法像google现在页面那样让它工作:) 有人知道将片段/布局添加到第一页吗?

感谢。

1 个答案:

答案 0 :(得分:1)

如果您想以与Google Now相同的方式添加某些片段或视图,Launcher3代码支持此功能。您基本上有两种方法可以获得所需的行为:

  • 对Launcher类进行子类化并覆盖hasCustomContentToLeft()以返回true和addCustomContentToLeft(),您可以在其中创建/扩充要添加的视图。如果您希望在屏幕打开时收到通知,请务必致电addToCustomContentPage并实施CustomContentCallbacks

  • 直接在Launcher类中实现上述相同的方法。

希望这有帮助, 米哈伊