背景
最近几个月,Google发布了带有导航抽屉(AKA滑动菜单)的Youtube app.
它有很多很酷的功能,我希望有一个应用程序,我正在努力.
功能是:
>触摸任何地方开始滑动.
>切换模式时,在动作栏的“向上”按钮上移动图标.
>内容区域(右侧的区域,而不是菜单本身)停留,而不是滚动,当滑动菜单.
>动作栏停留,而不是滚动.
>内容区域(右侧的区域,而不是菜单本身)在滚动时会更改其颜色,而不是菜单本身.
这里是截图显示我在说什么:
滑动前
滑动后:
目前,我知道有两个负责使用导航栏的主要图书馆:
>官方google navigation drawer library.
> sliding menu library,by jfeinstein10.
问题
官方图书馆和slidingMenu图书馆都没有像youtube应用程序那样组合的所有功能.
例如,官方图书馆没有能力#1(这就是为什么我发布了this thread),所以我使用了slideMenu库.
然而,slidingMenu库没有(或者是?)能力#2和#3.
这两个库都没有足够的文档/可以做的事情的例子,所以很难使用它们或添加新功能.
我试过了
目前,我使用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);
题
我如何获得滑动菜单(或导航抽屉)在YouTube应用程序上的行为,意思是我提到的所有功能组合?
可能的解决方案
编辑:使用menuDrawer library(github link here),我已经成功地实现了我提到的所有功能.这里是一个示例代码:
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); } }