DrawerLayout这个布局可以实现qq的侧滑功能,可以通过触屏来实现在侧滑栏从左向右拉动出来,从右向左将侧滑栏缩回去,效果如下

如何通过返回键缩回侧滑栏

 

 

似乎很炫的样子,当侧滑栏还在的情况下,点击back键想变成下面的样子

如何通过返回键缩回侧滑栏

结果居然整个页面都退出了,不对啊,我只是想把侧滑栏缩回去,这是为什么呢?

 

 

原因很简单:

               因为侧滑栏是在DrawerLayout这个布局里面的,点击back键自然就退出DrawerLayout这个布局

解决思路:

            1、当侧滑栏可见时,点击back键,只将侧滑栏缩回

            2、侧滑栏不可见时,点击back键,退出DrawerLayout整个布局

接下来就监听Back键吧,其他的实现功能程序太多就不展示了,只列出了如何通过监听back键实现将侧滑栏缩回的功能

              

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_BACK ) {
RelativeLayout relativeLayout= (RelativeLayout) findViewById(R.id.start_drawer);
if(relativeLayout.getVisibility()==View.VISIBLE){
//当左边的菜单栏是可见的,则关闭
drawerLayout.closeDrawer(relativeLayout);
Log.d("ss","隐藏滑动菜单");
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}

 注:这里relativeLayout是实现侧滑栏的布局,drawerLayout是整个布局,relativeLayout是在drawerLayout这个布局中的

 

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:andro></android.support.v4.widget.DrawerLayout>


左边菜单栏的打开和关闭:
openDrawer(View v);
closeDrawer(View v);
这里需要注意的一点时,菜单栏关闭时,不需要写程序去开启菜单栏,直接通过手动触屏拉动就可以了。

相关文章: