android – 模仿youtube / gmail应用程序的导航栏

前端之家收集整理的这篇文章主要介绍了android – 模仿youtube / gmail应用程序的导航栏前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
背景

最近几个月,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);
    }
}

解决方法

使用这个 MenuDrawer

滑出菜单实现,允许用户在您的应用程序的视图之间导航.

特征:

>菜单可以沿所有四个边缘定位.>支持附加一个永远可见的,不可拖动的菜单,这在平板电脑上是有用的.>菜单可以包含内容和整个窗口.>允许通过拖动边缘,整个屏幕或根本不打开抽屉.>可以在XML布局中使用.>指示符,显示当前可见的屏幕

猜你在找的Android相关文章