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);
}