popupWindow的封装使用
来源:互联网 发布:米特网域名怎么解析 编辑:程序博客网 时间:2024/06/08 15:06
之前遇到需求模仿淘宝选择商品属性的功能界面,最后选择使用popupwindow实现,还好需要的功能都能实现
封装类
/** * @author z`guo`an on 2017/4/26 16:27 */public class PopupWindow { public PopupWindow() { } public interface PopupWindowListeners { void setPopupWindowListeners(LinearLayout layout); void onDismiss(); void backgroundAlpha(float bgAlpha); } public void setPopupWindowListeners(PopupWindowListeners popupWindowListeners){ this.popupWindowListeners = popupWindowListeners; } private android.widget.PopupWindow popupWindow; private PopupWindowListeners popupWindowListeners; public void bottomwindow(View view, LinearLayout layout) { if (popupWindow != null && popupWindow.isShowing()) { return; } popupWindow = new android.widget.PopupWindow(layout, ViewGroup.LayoutParams.MATCH_PARENT, 1200); // ViewGroup.LayoutParams.WRAP_CONTENT //点击空白处时,隐藏掉pop窗口 popupWindow.setFocusable(true); popupWindow.setBackgroundDrawable(new BitmapDrawable()); //添加弹出、弹入的动画 popupWindow.setAnimationStyle(R.style.Popupwindow); int[] location = new int[2]; view.getLocationOnScreen(location); popupWindow.showAtLocation(view, Gravity.LEFT | Gravity.BOTTOM, 0, -location[1]); //添加按键事件监听 popupWindowListeners.setPopupWindowListeners(layout); //添加pop窗口关闭事件,主要是实现关闭时改变背景的透明度 popupWindow.setOnDismissListener(new android.widget.PopupWindow.OnDismissListener() { @Override public void onDismiss() { popupWindowListeners.onDismiss(); } }); popupWindowListeners.backgroundAlpha(0.7f); } public void Dissmiss(){ popupWindow.dismiss(); } public boolean isShowing(){ return popupWindow.isShowing(); }
if (window == null) { window = new PopupWindow();}binding.messageC.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setpopupvindow(v); }});window.setPopupWindowListeners(new PopupWindow.PopupWindowListeners() { @Override public void setPopupWindowListeners(LinearLayout layout) { } @Override public void onDismiss() { WindowManager.LayoutParams params = context.getWindow().getAttributes(); params.alpha = 1f; context.getWindow().setAttributes(params); } @Override public void backgroundAlpha(float bgAlpha) { WindowManager.LayoutParams lp = context.getWindow().getAttributes(); lp.alpha = bgAlpha; //0.0-1.0 context.getWindow().setAttributes(lp); context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); }});
private void setpopupvindow(View view) { LinearLayout layout = (LinearLayout) context.getLayoutInflater().inflate(R.layout.popup_window_paccont, null); ListView lst = (ListView) layout.findViewById(R.id.listv); TextView txv = (TextView) layout.findViewById(R.id.message_c); txv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (window.isShowing()) { window.Dissmiss(); } } }); TextOneAdapter oneAdapter = new TextOneAdapter(context , getData()); lst.setAdapter(oneAdapter); CommonUtils.fixListViewHeight(lst); window.bottomwindow(view, layout);}
觉得学有所得,特此记录一笔
阅读全文
0 0
- popupWindow的封装使用
- Android PopupWindow的封装使用
- popupwindow的封装
- 对PopupWindow的封装
- Android自定义弹框Dialog和Popupwindow的封装使用
- 封装一个万能的PopupWindow
- 使用Builder模式封装Dialog和PopupWindow
- Popupwindow封装
- Android 封装一个通用的PopupWindow
- 如何封装一个通用的PopupWindow
- Android 封装一个通用的PopupWindow
- 拒绝无用功,封装一个通用的PopupWindow
- 拒绝无用功,封装一个通用的 PopupWindow
- Android PopupWindow的使用
- Android PopupWindow的使用
- Android PopupWindow的使用!!!
- 关于popupWindow的使用
- PopupWindow的使用
- 基于Spark的移动用户主要活动地点的挖掘算法实现以及JavaEE技术整合
- leetcode——15.3Sum
- 计算广告课程小结
- webjs--两种时钟
- ubuntu14.04 apt-get由于源的问题导致无法下载问题解决
- popupWindow的封装使用
- centos修改环境变量
- 迅为I.MX6Q开发板Ubuntu系统的烧写方法
- java中关于冒泡排序
- jquery和js中对DOM元素的操作
- 使用pickerview实现(省市区)地址选择器的三级联动
- 计算广告学习笔记1.1 广告的基础知识-广告的目的
- windows下的ImageMagick安装详细过程
- Vsftpd使用虚拟用户登录调用mysql验证