Android自定义弹框Dialog和Popupwindow的封装使用

xiaoxiao2021-02-27  307

在项目开发中,经常会遇到各种通过弹框提示信息的需求,主要都是通过Dialog或者PopupWindow,由于在项目中可能需要多次用到,于是自己重写了2个类方便随时调用。

自定义Dialog类:

 

/** * author:xc * date: 2018/6/22 * desc:自定义布局的Dialog */ public class CustomBaseDialog extends Dialog { /** * 布局文件 */ private View view; private int width; private int height; public CustomBaseDialog(Context context, int layoutResID, int width, int height) { super(context); LayoutInflater layoutInflater = LayoutInflater.from(context); view = layoutInflater.inflate(layoutResID, null); this.width = width; this.height = height; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setBackgroundDrawableResource(android.R.color.transparent); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(view, new ViewGroup.LayoutParams(width, height)); } /** * @param viewRes 控件id * @param listener lister接口 * 控件点击事件 */ public void addViewOnclick(int viewRes, View.OnClickListener listener) { view.findViewById(viewRes).setOnClickListener(listener); } /** * @param viewRes 控件id * @param data 填充数据 * 初始化数据 */ public void setTextViewData(int viewRes, String data) { TextView textView = (TextView) view.findViewById(viewRes); textView.setText(data); } }

自定义PopupWindow类:

 

 

package com.satd.yshfq.widget; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.PopupWindow; import android.widget.TextView; import java.lang.reflect.Method; /** * author:xc * date: 2018/6/22 * desc:自定义布局的PopupWindow */ public class CustomBasePopupWindow extends PopupWindow { /** * 布局文件 */ private View view; /** * @param context 上下文 * @param layoutResID 布局文件 * @param width 窗口宽度 * @param height 窗口高度 */ public CustomBasePopupWindow(Context context, int layoutResID, int width, int height) { view = LayoutInflater.from(context).inflate(layoutResID, null); setWidth(width); setHeight(height); setContentView(view); setFocusable(true); setBackgroundDrawable(new ColorDrawable(0x00000000)); } /** * @param x 显示位置所在x坐标 * @param y 显示位置所在y坐标 */ public void show(int x, int y) { showAtLocation(view, Gravity.NO_GRAVITY, x, y); } /** * 当点击外部不消失窗口,并且能相应外部控件的点击事件 */ public void setPopupWindowTouchModal(boolean touchModal) { Method method; try { method = PopupWindow.class.getDeclaredMethod("setTouchModal", boolean.class); method.setAccessible(true); method.invoke(this, touchModal); } catch (Exception e) { e.printStackTrace(); } } /** * @param viewRes 控件id * @param listener lister接口 * 控件点击事件 */ public void addViewOnclick(int viewRes, View.OnClickListener listener) { view.findViewById(viewRes).setOnClickListener(listener); } /** * @param viewRes 控件id * @param data 填充数据 * 初始化数据 */ public void setTextViewData(int viewRes, String data) { TextView textView = (TextView) view.findViewById(viewRes); textView.setText(data); } }

 

 

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-4342.html

最新回复(0)