DrawerLayout使用

布局:
<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/drawer_layout"
    tools:context=".view.activity.BaseActivity">

    <LinearLayout
        android:id="@+id/ll_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <com.example.test1512r3.view.customview.MyTitleView
            android:id="@+id/parent_title"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:background="#1296db"/>

        <FrameLayout
            android:id="@+id/child_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </LinearLayout>
    <!--侧滑界面   宽可设置为match_parent效果为默认宽度,可自定义侧拉栏宽度-->
    <--android:layout_gravity=" "决定侧滑界面是左侧滑还是右侧滑-->
    <include layout="@layout/sliding_left"
        android:layout_width="450dp"
        android:layout_height="match_parent"
        android:layout_gravity="left" />
</android.support.v4.widget.DrawerLayout>
代码:
//内容布局
LinearLayout ll_content = findViewById(R.id.ll_content);
//侧拉栏布局
LinearLayout ll_menu = findViewById(R.id.ll_menu);
//DrawerLayout
DrawerLayout drawer_layout = findViewById(R.id.drawer_layout);

drawer_layout.addDrawerListener(new DrawerLayout.DrawerListener() {
    @Override
    public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
        //设置主布局随菜单滑动而滑动
        int drawerViewWidth = drawerView.getWidth();
        ll_content.setTranslationX(drawerViewWidth * slideOffset);

        //设置控件最先出现的位置
        double padingLeft = drawerViewWidth * (1 - 0.618) * (1 - slideOffset);
        ll_menu.setPadding((int) padingLeft, 0, 0, 0);
    }
    @Override
    public void onDrawerOpened(@NonNull View drawerView) { }
    @Override
    public void onDrawerClosed(@NonNull View drawerView) { }
    @Override
    public void onDrawerStateChanged(int newState) { }
});
DrawerLayout 的一些方法:
drawer_layout.closeDrawer(Gravity.LEFT);//关闭侧拉栏
drawer_layout.openDrawer(Gravity.LEFT);//打开侧拉栏
drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED,Gravity.LEFT); //关闭手势滑动
drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED,Gravity.LEFT); //打开手势滑动
下面是DrawerLayout的几个常用方法说明:
setDrawerShadow : 设置主页面的渐变阴影图形。
addDrawerListener : 添加抽屉面板的拉出监听器。该监听器实现了下面三个方法:
--onDrawerSlide : 抽屉面板在滑动。
--onDrawerOpened : 抽屉面板已打开。
--onDrawerClosed : 抽屉面板已关闭。
--onDrawerStateChanged : 抽屉面板的状态发生变化。
removeDrawerListener : 移除抽屉面板的拉出监听器。
closeDrawers : 关闭所有抽屉面板。
openDrawer : 打开指定抽屉面板。
closeDrawer : 关闭指定抽屉面板。
isDrawerOpen : 判断指定抽屉面板是否打开。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值