Android自定义弹框Dialog和Popupwindow的封装使用
来源:互联网 发布:真趣网络 蔡智 编辑:程序博客网 时间:2024/05/21 11:34
在项目开发中,经常会遇到各种通过弹框提示信息的需求,主要都是通过Dialog或者PopupWindow,由于在项目中可能需要多次用到,于是自己重写了2个类方便随时调用。
自定义Dialog类:
public abstract class CustomBaseDialog extends Dialog implements android.view.View.OnClickListener { /** * 布局文件 */ public int layoutResID; public CustomBaseDialog(Context context, int layoutResID) { super(context); this.layoutResID = layoutResID; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setBackgroundDrawableResource(android.R.color.transparent); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(layoutResID); setCanceledOnTouchOutside(false); Window w = getWindow(); w.setWindowAnimations(R.style.PopupAnimation); init(); } /** * @author xc * @date 2016-3-31 下午2:43:15 * @describe 初始化控件和填充数据 */ public abstract void init();}自定义PopupWindow类:
public abstract class CustomBasePopupWindow extends PopupWindow{ /** * 布局文件 */ private PopupWindow mPreviewPopup; private View view; /** * @param context 上下文 * @param layoutResID 布局文件 * @param width 窗口宽度 * @param height 窗口高度 */ public CustomBasePopupWindow(Context context, int layoutResID, int width, int height) { mPreviewPopup = new PopupWindow(context); view = LayoutInflater.from(context).inflate(layoutResID, null); mPreviewPopup.setWidth(width); mPreviewPopup.setHeight(height); mPreviewPopup.setContentView(view); mPreviewPopup.setBackgroundDrawable(new ColorDrawable(0x00000000)); } /** * @param x 显示位置所在x坐标 * @param y 显示位置所在y坐标 */ public void show(int x, int y) { mPreviewPopup.showAtLocation(view, Gravity.NO_GRAVITY, x, y); } /** * 关闭 */ public void dismiss() { if (mPreviewPopup != null) { mPreviewPopup.dismiss(); } } /** * 当点击外部不消失窗口,并且能相应外部控件的点击事件 */ public void setPopupWindowTouchModal(boolean touchModal) { if (null == mPreviewPopup) { return; } Method method; try { method = PopupWindow.class.getDeclaredMethod("setTouchModal", boolean.class); method.setAccessible(true); method.invoke(mPreviewPopup, touchModal); } catch (Exception e) { e.printStackTrace(); } } /** * @author xc * @date 2016-3-31 下午2:43:15 * @describe 初始化需要更新数据或者处理点击事件的控件 */ public abstract void init();}
1 0
- Android自定义弹框Dialog和Popupwindow的封装使用
- Android的Dialog和PopupWindow的使用
- 使用Builder模式封装Dialog和PopupWindow
- 自定义popupwindow和dialog的区别与使用
- Android自定义Dialog,Toast,Notification和PopupWindow
- Android PopupWindow的封装使用
- 自定义Dialog、带时间和日期的Dialog、PopupWindow、Notification
- android中Dialog和PopupWindow的区别
- Android中Popupwindow和Dialog的区别
- Android中的Dialog和Popupwindow的区别
- Android Spinner、PopupWindow和Dialog的关系
- android中Dialog和PopupWindow的区别
- android Dialog 自定义 封装
- Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)
- Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)
- Android 自定义dialog(封装好的)
- Android 自定义通用Dialog的封装
- Popupwindow的使用 -- 区别于Dialog, 显示位置可以自定义
- /etc/fstab 文件解释
- Top 10 Mistakes Java Developers Make | Java程序员最常见最容易犯的10个错误
- Delphi 延迟函数
- ndnsim2.0学习笔记(一)——关于examples
- React Navigation--Stack Navigator Simple Example
- Android自定义弹框Dialog和Popupwindow的封装使用
- spark 的实现简介
- 怎么解决java.lang.NoClassDefFoundError错误
- TIMESTAMP
- Spring与MyBatis整合
- 以邻接矩阵存储的图类:深度优先
- 递归算法
- Vivado进行Generate Bitstream时报错 [Drc 23-20]
- 百宝云企业版