您的位置:首页 > 移动开发 > Android开发

Android基础_PopupWindow的使用

2016-01-05 09:40 369 查看
昨天有同学问我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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息