Android基础_PopupWindow的使用

来源:互联网 发布:一根网线开两个淘宝店 编辑:程序博客网 时间:2024/06/01 09:10

昨天有同学问我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的时候,是从屏幕顶部开始// 更新popupWindowpopupWindow1.update();// 重载方法,位置,偏移量,大小

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

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

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

下载Demo

2 0
原创粉丝点击