Android 5.0特性(ActionBarDrawerToggle)

1,实现效果

  • 点击切换按钮弹出菜单,并且菜单和按钮动画,有联动效果 

2,实现逻辑

【1】MainActivity的onCreate方法中创建,ActionBarDrawerToggle (V7包下)

  • 布局文件

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_drawer"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="com.xiaoshuai.www.actionbar.MainActivity">



    <FrameLayout

        android:id="@+id/content"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:background="#fff000">

    </FrameLayout>

    <FrameLayout

        android:id="@+id/menu"

        android:layout_width="200dp"

        android:layout_height="match_parent"

        android:layout_gravity="start"

        android:background="#000">

        <Button

            android:id="@+id/am_bt_huanfu"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:onClick="changeSkin"

            android:text="皮肤设置" />

    </FrameLayout>

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

  • 获取ActionBar,设置初始化箭头

  • 创建ActionBarDrawerToggle对象,添加同步,

  • DrawerLayout监听

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        int theme = getSharedPreferences("theme.xml", MODE_PRIVATE).getInt("theme", R.style.GreenTheme);

        setTheme(theme);

        ActionBar actionBar = getSupportActionBar();//获取当前升级后标题栏

        //设置一个标题

        actionBar.setTitle("谷歌市场");

        //初始化控件

        setContentView(R.layout.activity_main);

        Activity activity = this;

        drawer = (DrawerLayout) findViewById(R.id.activity_drawer);

        actionBar.setDisplayHomeAsUpEnabled(true);//让Actionbar去初始化箭头按钮

        //1上下文

        //2.侧滑菜单

        //3.R.string. 开启

        //4.R.string  关闭

        ActionBarDrawerToggle actionBarDrawerToggle =    new ActionBarDrawerToggle(activity, drawer, R.string.open, R.string.close);

        actionBarDrawerToggle.syncState();//同步  替换原有按钮

        drawer.addDrawerListener(actionBarDrawerToggle); 侧拉布局和按钮关联监听

        

    }

【2】点击按钮关联侧拉菜单监听

  • android.R.id.home 是系统自定ID

//处理ActionBar元素的点击事件

    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

            //Ctrl+D复制行

            switch (item.getItemId()) {

                case android.R.id.home:

                    Toast.makeText(this, "旋转箭头", Toast.LENGTH_SHORT).show();

                    View menu=findViewById(R.id.menu);

                    if (drawer.isDrawerOpen(menu)) {

                        drawer.closeDrawer(menu);

                    } else {

                        drawer.openDrawer(menu);

                    }

                    break;

        }

        return super.onOptionsItemSelected(item);

    }

猜你喜欢

转载自blog.csdn.net/Cricket_7/article/details/88924078
今日推荐