安卓开发--左侧或右侧出来的popuwindows替代drawerlayout侧拉菜单

在项目中,为了实现每个Fragment都有侧拉菜单,作者选择了使用自定义的PopuWindows代替DrawerLayout。PopuWindows能实现从左侧或右侧滑出的效果,并通过动画控制滑入滑出。在关闭时,可以通过调整窗口透明度使背景变暗,增强菜单的突出感。文章详细介绍了布局设计、动画设置、事件监听和更新方法,并提供了GitHub上的代码下载链接。
摘要由CSDN通过智能技术生成

开发中,由于项目需求,需要每一个fragment都有侧拉栏,第一时间想到的就是用drawerlayout,这是谷歌推荐的侧拉栏,用法非常简单,只要把drawerlayout作为布局的最外层,然后里面用两个大布局包着,一个是主布局,一个是侧拉菜单布局,然后再侧拉布局的父布局给个属性 :layout_gravity="left",这样用手势侧拉就能拉出来侧拉栏了,可以和toobar绑定,通过toggle 

//获取开关同时让开关和DrawerLayout关联在一起
toggle = new ActionBarDrawerToggle(this, mDrawerLayout, 0, 0);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//设置默认的标题不显示
getSupportActionBar().setDisplayShowTitleEnabled(false);
//设置点击事件,点击弹出menu界面
mDrawerLayout.setDrawerListener(toggle);
不过正常四个fragment的话,底部导航按钮是不会被遮挡住的,这样拉出菜单底下按钮还可以点击切换,需求不允许,所以就考虑从简,用popuwindows代替侧拉栏

先看效果图:


其实大体逻辑上并不难,只是自定义popuwindos,然后动画样式设置是左到右,或者右到左,这种滑入滑出的感觉,然后监听dismiss,控制窗口透明度,就是周围变暗,突出菜单栏,点击事件可以构造方法传入包括更新popuwinds上的头像姓名也可以设置get方法拿到对象,

public TextView getStartview(){

    return starttime;
}

然后调用update()更新

popMenus2.getStartview().setText(pickstarttimet);
popMenus2.update();
popMenus2.showAtLocation(MainActivity.this.findViewById(R.id.main_layout),
        Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);

接下来上代码:

1.布局

主布局就直接 relativlayout 替代标题(style是NoActionbar)

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:background="@color/titbar_color">

    <ImageView
        android:id="@+id/lefthaha"
        android:clickable="true"
        android:layout_marginLeft="20dp"
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/title_but_left3x"/>

    <TextView
        android:id="@+id/titlehaha"
        android:text="我是主题"
        android:textSize="18sp"
        android:textColor="@color/white"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值