码迷,mamicode.com
首页 > 其他好文 > 详细

使用Google原生的DrawerLayout+ActionBar实现测滑

时间:2015-04-17 13:03:59      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 内容区 -->
    <RelativeLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.zfy.appmarket.app.view.PagerTab
            android:id="@+id/pagerTab"
            android:layout_width="match_parent"
            android:layout_height="@dimen/pagertab_height"
            android:background="@drawable/bg_tab" />

        <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/pagerTab" />
    </RelativeLayout>

    <!-- 侧拉菜单 -->
    <FrameLayout
        android:id="@+id/menu"
        android:layout_width="@dimen/menu_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@drawable/bg_tab" />


</android.support.v4.widget.DrawerLayout>

/**
     * DrawerLayout:Android自己提供的滑动菜单(后加入的布局在上面)
     * 注意:在上面的布局需要添加android:layout_gravity="start"
     */
    @Override
    protected void initView() {

        setContentView(R.layout.activity_main);
        pagerTab = (PagerTab) findViewById(R.id.pagerTab);
        viewPager= (ViewPager) findViewById(R.id.viewPager);
        drawerLayout=(DrawerLayout)findViewById(R.id.drawerLayout);
        menuLayout= (FrameLayout) findViewById(R.id.menu);

        /**
         * 设置DrawerLayout的拖动事件
         */
        drawerLayout.setDrawerListener(new MyDrawerListener());
        /**
         * 设置阴影
         */
        drawerLayout.setDrawerShadow(R.drawable.ic_drawer_shadow, GravityCompat.START);

        /**
         * 设置菜单项目
         */
        menuLayout.addView(new MenuHolder(this).getRootView());

        /**
         * 获取条目项
         */
        String[] tabs=getResources().getStringArray(R.array.tab_names);
        MainPagerAdapter pagerAdapter=new MainPagerAdapter(getSupportFragmentManager(),tabs);
        /**
         * 设置适配器
         */
        viewPager.setAdapter(pagerAdapter);
        /**
         * 绑定Tab和ViewPager
         */
        pagerTab.setViewPager(viewPager);
        /**
         * 设置ViewPager监听器
         */
        pagerTab.setOnPageChangeListener(this);
        /**
         * 首次运行默认加载第一页
         */
        viewPager.setCurrentItem(0);

    }

    @Override
    protected void initActionBar() {
        //获取ActionBar实例:注意是V7包的
        mActionBar=getSupportActionBar();
        //设置ActionBar的显示标题
        mActionBar.setTitle(R.string.app_name);
        //设置ActionBar的Icon
        mActionBar.setIcon(UIUtils.getDrawable(R.drawable.ic_launcher));
        //启用ActionBar的按钮
        mActionBar.setDisplayHomeAsUpEnabled(true);
        mActionBar.setDisplayShowHomeEnabled(true);

        /**
         * 来自V7包的ActionBarDrawerToggle(注意区分V4包的,构造函数参数不同)
         * 设置ActionBar的开关,绑定DrawerLayout和ActionBar
         *   参数一:当前Activity
         *   参数二:要绑定的DrawerLayout
         *   参数三:滑动菜单打开时的描述
         *   参数四:滑动菜单关闭时的描述
         */
        mActionBarDrawerToggle=new ActionBarDrawerToggle(MainActivity.this,drawerLayout,R.string.drawer_open,R.string.drawer_close);
        //设置同步开关状态,关联ActionBar和滑动菜单
        mActionBarDrawerToggle.syncState();
    }

 

 

实现ActionBar与DrawerLayout滑动绑定的监听

 /**
     * DrawerLayout的拖动事件:参数与ActionBarDrawerToggle完全一致,直接传递
     */
    private class MyDrawerListener implements DrawerLayout.DrawerListener {
        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            mActionBarDrawerToggle.onDrawerSlide(drawerView,slideOffset);
        }

        @Override
        public void onDrawerOpened(View drawerView) {
            mActionBarDrawerToggle.onDrawerOpened(drawerView);
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            mActionBarDrawerToggle.onDrawerClosed(drawerView);
        }

        @Override
        public void onDrawerStateChanged(int newState) {
            mActionBarDrawerToggle.onDrawerStateChanged(newState);
        }
    }

 

使用Google原生的DrawerLayout+ActionBar实现测滑

标签:

原文地址:http://www.cnblogs.com/zfy0526/p/4434254.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!