Фон
В последние месяцы Google выпустил приложение Youtube с навигационным ящиком (скользящее меню AKA).
у него много интересных функций, которые я хочу использовать в приложении, над которым я работаю.
функции:
-
нажмите, чтобы начать скольжение.
-
перемещение значка на кнопке "вверх" панели действий при переключении режимов.
-
область содержимого (область справа, а не меню) остается вместо прокрутки при перемещении меню.
-
панель действий остается вместо прокрутки.
-
область содержимого (область справа, а не само меню) изменяет свой цвет при прокрутке, а не в самом меню.
вот скриншоты, чтобы показать, о чем я говорю:
перед скольжением:
после скольжения:
В настоящее время я знаю две основные библиотеки, которые отвечают за использование ящика навигации:
проблема
и в официальной библиотеке, и в библиотеке slideMenu нет всех тех функций, которые объединены, например, в приложении YouTube.
например, официальная библиотека не обладает способностью № 1 (почему я опубликовал этот поток), поэтому вместо этого я использовал библиотеку slideMenu.
однако, в библиотеке slideMenu нет (или нет?) способности № 2 и № 3.
В обеих библиотеках недостаточно документации/примеров того, что можно сделать, поэтому очень сложно их использовать или добавить к ним новые функции.
что я пробовал
В настоящее время я использую библиотеку slideMenu, так что это мой код для подготовки slideMenu:
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);
Вопрос
как я могу получить slideMenu (или навигационный ящик), чтобы действовать как на приложении youtube, то есть со всеми функциями, которые я назвал объединенными?
возможное решение
EDIT: используя menuDrawer library (github link здесь), я успешно достиг всех функций, о которых я упомянул. здесь пример кода:
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);
}
}