popupwindow的封装
来源:互联网 发布:桌面美化软件 编辑:程序博客网 时间:2024/06/08 09:32
由于在项目中会经常用的popupwindows所以对其进行了封装。这样用起来就比较方便
我想在Activity中这样使用 :
MyPopupWindows myPopupWindows = new MyPopupWindows(this,R.layout.layout_myPopupWindows);//R.layout.layout_myPopupWindows 布局文件/***对布局文件中的控件进行初始化和添加事件监听*/myPopupWindows.setMyCallBack(new MyPopupWindows.MyCallBack() { @Override public void func(View view) { //对布局文件进行初始化 TextView tv = view.findViewById(R.id.tv); //对布局中的控件添加事件监听 tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); }});/**显示该popupwindowsisShowAsDropDown:表示是否显示在activity某控件的下面parent:activity布局中的控件。width:该popupwindows显示的宽度 height:该popupwindows显示的高度*/myPopupWindows.show(boolean isShowAsDropDown, View parent, int width, int height)/***退出该popupwindows*/myPopupWindows.dismiss();
下面上封装的代码:
package com.lyt.project.view;import android.app.Activity;import android.content.Context;import android.graphics.drawable.ColorDrawable;import android.view.Gravity;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.widget.PopupWindow;/** * Created by liyunte on 2016/7/21. * 使用方法: * 初始化MyPopupWindows; * 设置监听并初始化控件 setMyCallBack * 显示 show * 隐藏 dismiss(); 由于可直接调用MyPopupWindows的父类PopupWindow的dismiss(); * 所以此类中不重写dismiss(); * */public class MyPopupWindows extends PopupWindow { private Activity context;// private LayoutInflater inflater; private View contentView;//myPopupWindows所在的布局 private final int h;//显示的高度 private final int w;//显示的宽度 private MyCallBack myCallBack;//用来初始化mypopupwindows布局中的控件和添加事件监听 public MyPopupWindows(Activity context,int layout){ this.context = context; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);//获取inflater contentView = inflater.inflate(layout, null);//加载布局文件并保存在View中 h = context.getWindowManager().getDefaultDisplay().getHeight();//获取屏幕的高度并赋值给h w = context.getWindowManager().getDefaultDisplay().getWidth();//获取屏幕的宽度并赋值给w this.setContentView(contentView);//添加到popupwindows中 this.setFocusable(true);//设置可获取焦点 this.setOutsideTouchable(true);//设置外部可触摸 this.update(); this.setBackgroundDrawable(new ColorDrawable());//必须设置背景否则报错 /* * 触摸拦截 * */ this.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return false; } }); } /* *isShowAsDropDown :true显示在parent控件的下面 false:显示在屏幕中间 * parent:activity布局中的控件 * width:显示的宽度 * height;显示的高度 * */ public void show(boolean isShowAsDropDown, View parent, int width, int height) { /* 判断接口是否为空,不为空则和绑定事件监听 * */ if (myCallBack != null) { myCallBack.func(contentView); } /* * 如果形参width和height小于或等于0则用获取到的屏幕宽高 * */ if (width <= 0 || height <= 0) { this.setWidth(w); this.setHeight(h); } else { this.setWidth(width); this.setHeight(height); } /* * isShowAsDropDown :true显示在parent控件的下面 false:显示在屏幕中间 * */ if (isShowAsDropDown) { this.showAsDropDown(parent); } else { this.showAtLocation(parent, Gravity.CENTER, 0, 0); } } public void setMyCallBack(MyCallBack myCallBack){ this.myCallBack = myCallBack; } public interface MyCallBack{ public void func(View view); }}
0 0
- popupwindow的封装
- popupWindow的封装使用
- 对PopupWindow的封装
- Android PopupWindow的封装使用
- 封装一个万能的PopupWindow
- Popupwindow封装
- Android 封装一个通用的PopupWindow
- 如何封装一个通用的PopupWindow
- Android 封装一个通用的PopupWindow
- 拒绝无用功,封装一个通用的PopupWindow
- 拒绝无用功,封装一个通用的 PopupWindow
- PopupWindow 封装详解
- 在基类中封装popupwindow
- Android自定义弹框Dialog和Popupwindow的封装使用
- 教你如何封装一个通用的PopupWindow
- Android自定义View之popupwindow进阶封装:高仿ios “item动画弹出”效果的popupwindow。
- Android封装类似微信的顶部TitleBar弹出的PopupWindow代码
- Android 简单封装一个精美、好用的菜单型PopupWindow
- Xcode常用快捷键
- 小程序WXML之数据绑定
- 多线程之Runnable
- uboot之start_armboot分析1
- 二叉树的递归和非递归遍历
- popupwindow的封装
- Realm 入门 简单实用方法
- JS垫脚石-字符串篇
- php获取用户(客户端)真实IP地址的三种方法
- 微信小程序 Button按钮与Icon图标
- Java泛型与C++模板
- oracle创建数据库步骤
- DPDK关键技术点
- 'module' object has no attribute 'MLPRegressor'问题解决(Python2.7)