Android Launcher3 — Страница Google Now

Я скачал Launcher3 (Google Kitkat Launcher) из источников 4.4.

Я импортировал его в eclipse. Я избавился от ошибок. И мой лаунчер работает довольно хорошо.

Но чего-то не хватает. Страница "GOOGLE NOW" при прокрутке влево.

Я не могу активировать Google сейчас. В любом случае мне это не нужно. Я хочу поместить свой собственный фрагмент или макет на первую страницу, а другие страницы будут работать так же, как обычный лаунчер. Как Google Now Launcher (Kitkat Launcher от Google) на странице Google Now.

Вот так: введите здесь описание изображения

Я добавил свой макет следующим образом:

вот оригинальные коды из 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;
}
    }

как вы можете видеть, когда на его первой странице я изменил макет, но у меня возникают проблемы с дочерними представлениями, анимацией и т. д., в любом случае, после этого я даже не могу получить доступ к другим страницам. я везде ставил try catch, когда получаю ошибки из-за того, что «celllayout не может привязываться к относительному bla bla ..»

моя попытка поймать так

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

я не мог заставить его работать в данный момент, как страницы Google Now :) кто-нибудь знает о добавлении фрагмента/макета на первую страницу?

Спасибо.


person Dave Doga Oz    schedule 31.01.2014    source источник


Ответы (1)


Если вы хотите добавить фрагмент или представление так же, как Google Now, код Launcher3 поддерживает это. В основном у вас есть 2 способа получить желаемое поведение:

  • Подкласс класса Launcher и перезапишите hasCustomContentToLeft(), чтобы вернуть true, и addCustomContentToLeft(), где вы можете создать/раздуть свое представление, которое будет добавлено. Убедитесь, что вы вызываете addToCustomContentPage и реализуете CustomContentCallbacks, если хотите получать уведомления, когда экран открыт.

  • Реализуйте те же методы, что и описанные выше, непосредственно в классе Launcher.

Надеюсь, это поможет, Михай

person r1k0    schedule 26.05.2014
comment
я нашел это уже. около 3 месяцев назад. и мое приложение находится в магазине игр как Do Launcher .. В любом случае спасибо - person Dave Doga Oz; 28.05.2014
comment
Без проблем. Я также вношу некоторые изменения в программу запуска AOSP, и, ища другие проблемы, я нашел ваш вопрос. Думал, что добавлю ответ. - person r1k0; 30.05.2014
comment
привет, не могли бы вы объяснить мне, как добавить ярлык из всех приложений в рабочую область в Launcher3?, вот мой вопрос: stackoverflow.com/questions/29410875/ - person Mounir Elfassi; 27.04.2015
comment
Привет, можем ли мы использовать код AOSP Launcher3, изменить его соответствующим образом и загрузить в playstore??? - person pradeep.k; 04.01.2016
comment
@pradeep.k Насколько я знаю, Launcher3, будучи частью AOSP, подпадает под действие лицензии Apache License 2.0. Вы должны ознакомиться с условиями лицензии и посмотреть, при каких условиях вы можете что делать. - person r1k0; 05.01.2016
comment
@ r1k0 Спасибо. Я проверю :) - person pradeep.k; 03.02.2016
comment
Можно ли добавить несколько страниц слева? Или добавить страницы справа? - person ; 30.04.2016
comment
@ r1k0, можем ли мы добавить представление в правой части главного экрана, как показано выше, в левой части? - person rupesh; 23.01.2017
comment
Я не работал над этим кодом какое-то время, поэтому я не знаю, как это можно сделать. Я предполагаю, что это, вероятно, можно сделать, но потребует большего объема работы. - person r1k0; 25.01.2017