имитация навигационного ящика приложения youtube / gmail

фон

В последние месяцы Google выпустила приложение Youtube с ящиком навигации (АКА сползая меню).

Он имеет много интересных функций, которые я хочу иметь в приложении, над которым я работаю.

функции:

  1. нажмите в любом месте, чтобы начать скольжение.

  2. перемещение значка на кнопке "вверх"панели действий при переключении режимов.

  3. зона содержание (область справа, а не само меню) остается вместо прокрутки при перемещении меню.

  4. панель действий остается вместо прокрутки.

  5. область содержимого (область справа, а не само меню) изменяет свой цвет при прокрутке, а не само меню.

вот скриншоты, чтобы показать, о чем я говорю:

перед раздвижной:

before

после скольжение:

after

в настоящее время я знаю 2 основные библиотеки, которые отвечают за использование навигационного ящика :

проблема

как официальная библиотека, так и библиотека slidingMenu не имеют всех этих функций в сочетании как в приложении youtube.

например, официальная библиотека не имеет возможности #1 (Вот почему я написал этой теме) , поэтому я использовал библиотеку slidingMenu.

однако в библиотеке slidingMenu нет (или есть?) способность #2 и #3 .

обе библиотеки не имеют достаточной документации / примеров того, что можно сделать, поэтому их очень сложно использовать или добавлять в них новые функции.

что я пробовал

в настоящее время я использую библиотеку slidingMenu, поэтому это мой код для подготовки slidingMenu :

activity.setBehindContentView(slidingMenuRootView);
mSlidingMenu = activity.getSlidingMenu();
mSlidingMenu.setShadowWidthRes(R.dimen.slidingmenu_shadow_width);
mSlidingMenu.setShadowDrawable(R.drawable.slidingmenu_shadow);
mSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
mSlidingMenu.setFadeEnabled(true);
mSlidingMenu.setFadeDegree(1.0f);
mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
activity.setSlidingActionBarEnabled(false);

вопрос

как я могу заставить slidingMenu (или навигационный ящик) действовать как в приложении youtube , то есть со всеми функциями, которые я упомянул в сочетании ?


возможное решение

EDIT: использование библиотека menuDrawer (ссылка github здесь), я успешно достиг всего особенности, о которых я упоминал. вот пример кода:

public class ActionBarSherlockSample extends SherlockActivity {

    private MenuDrawer mDrawer;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar();
        mDrawer = MenuDrawer.attach(this, MenuDrawer.Type.OVERLAY);
        final TextView menuView = new TextView(this);
        menuView.setTextColor(0xFFFFFFFF);
        menuView.setText("As the drawer opens, the drawer indicator icon becomes smaller.");
        menuView.setGravity(Gravity.CENTER);
        mDrawer.setMenuView(menuView);
        mDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_FULLSCREEN);
        mDrawer.setOnDrawerStateChangeListener(new OnDrawerStateChangeListener() {

            @Override
            public void onDrawerStateChange(final int oldState, final int newState) {
                Log.d("AppLog", "oldState:" + oldState + " newState:" + newState);
            }

            @Override
            public void onDrawerSlide(final float openRatio, final int offsetPixels) {
            }
        });
        final TextView contentView = new TextView(this);
        contentView
                .setText("This sample uses ActionBarSherlock to display an ActionBar on older platforms. The drawer indicator, "
                        + "as per the design guidelines, is visible in the top left corner.");
        contentView.setGravity(Gravity.CENTER);
        mDrawer.setContentView(contentView);
        mDrawer.setSlideDrawable(R.drawable.ic_drawer);
        mDrawer.setDrawerIndicatorEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(final MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            mDrawer.toggleMenu();
            break;
        }
        return super.onOptionsItemSelected(item);
    }
}

1 ответов


использовать MenuDrawer

выдвижную меню, которая позволяет пользователям перемещаться между экранами в вашем приложение.

характеристики:

  • меню можно расположить вдоль всех четырех краев.
  • поддерживает прикрепление всегда видимого, не перетаскиваемого меню, которое полезно на планшетах.
  • меню может обернуть как содержимое, так и все окно.
  • позволяет ящику быть раскрытым путем волочить edge, весь экран или нет.
  • может использоваться в макетах XML.
  • индикатор, который показывает, какой экран сейчас просматривается