Android基础_PopupWindow的使用

昨天有同学问我PopupWindow实现仿QQ底部菜单的问题,就写了个demo。可以底部下载

主要实现了两个功能:
1、模仿百度地图选择图层效果,右上角放大收起动画效果
2、模仿QQ底部菜单栏,底部滑入滑出效果

这里写图片描述

主要代码部分:

        View popupView1 = inflater.inflate(R.layout.popup_map_select, null, false);
        popupWindow1 = new PopupWindow(popupView1, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, false);
        popupWindow1.setAnimationStyle(R.style.popup_anim_top_right);   // 设置动画效果
        popupWindow1.setFocusable(true);            // 设置焦点,默认,可以在构造方法中设置
        popupWindow1.setTouchable(true);            // 设置是否可以触摸事件
        popupWindow1.setBackgroundDrawable(new ColorDrawable(0x0e000000));// 如果可以点击周围关闭PopupWindow需要这只背景属性
        popupWindow1.setOutsideTouchable(false);    // 设置是否可以点击周围关闭PopupWindow
        popupWindow1.setClippingEnabled(true);      // 是否强制包含在屏幕范围内,默认true
//      popupWindow1.setSplitTouchEnabled(false);   // 分割多点触控,一般不需要
//      popupWindowMenu.setTouchInterceptor(l);     // 设置触摸拦截
        popupWindow1.update();                      // 更新位置,偏移,大小
//      popupWindow1.setOnDismissListener(l)        // 设置PopupWindow关闭监听

// 显示出popupWindow
        popupWindow1.showAsDropDown(v, 0, 0);
//      popupWindow1.showAsDropDown(v, 0, 0, Gravity.CENTER);       // API19以上才可以
//      popupWindow1.showAtLocation(v, Gravity.RIGHT, -100, 0);     // 注意:Gravity.TOP的时候,是从屏幕顶部开始

// 更新popupWindow
popupWindow1.update();// 重载方法,位置,偏移量,大小

在弹出菜单的时候整个界面的背景会变暗,可以设置Window的透明度来实现

    // 参数为想要的透明度 
    private void setWindowAlpha(float alpha){
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.alpha = alpha;
        getWindow().setAttributes(lp);
    }

关键代码部分就这些了,动画等的资源文件就不一一贴出来了,需要什么效果可以下载Demo自己修改下UI样式

下载Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值