android-自定义Dialog
来源:互联网 发布:java棕色rgb 编辑:程序博客网 时间:2024/06/04 14:03
开发中我们会经常用到dialog,但是系统每次使用的时候去写,又会觉得很麻烦,所以就把dialog提出来,写成一个公共的,再公用的dialog类中使用,传入一些参数,就可以使用了
首先我们先创建一个CustomDialog.java文件,继承Dialog
import android.app.Activity;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.content.res.Resources;import android.util.DisplayMetrics;import android.view.Gravity;import android.view.KeyEvent;import android.view.Window;import android.view.WindowManager;import android.view.WindowManager.LayoutParams;public abstract class CustomDialog extends Dialog {public Context context;Dialog dialog;public CustomDialog(Context context, int layout, int style) {super(context, style);setContentView(layout);this.context = context;dialog = this;Window window = getWindow();WindowManager.LayoutParams layoutParams = window.getAttributes();layoutParams.width = LayoutParams.MATCH_PARENT;layoutParams.height = LayoutParams.MATCH_PARENT;layoutParams.gravity = Gravity.CENTER;window.setAttributes(layoutParams);setCanceledOnTouchOutside(false);setCancelable(false);setOnKeyListener(new OnKeyListener() {@Overridepublic boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {return true;} else {return false; // 默认返回 false}}});initListener();if (!(context instanceof Activity)) {getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);}}public abstract void initListener();@SuppressWarnings("unused")private float getDensity(Context context) {Resources resources = context.getResources();DisplayMetrics dm = resources.getDisplayMetrics();return dm.density;}public void CloseDialog() {dialog.dismiss();}@Overridepublic void onBackPressed() {CloseDialog();}}可以看到,代码中我重写了onBackPressed,又去监听用户是否按下手机的返回键,这里会有一中情况,就是在dialog显示的时候,我们不希望用户点击返回键的时候关闭我们的dialog,所以这两者在使用的时候用根据情况来使用
而定义的initListener方法,是为了有些需要在dialog进行操作开发的,比如说点击时间,图片的修改之类
layoutid是我们写好的xml布局,style是dialog呈现的方式,渐变啊,由上而下等
然后我们定义一个DialogUtil的公共方法,这里把我们会展示的dialog集中,使用的时候,调用该方法就可以了
public class DialogUtil {public static CustomDialog loading(Context context,Handler handler){CustomDialog customDialog = new CustomDialog(context,R.layout.loading,R.style.Dialog) {@Overridepublic void initListener() {}};customDialog.show();return customDialog;}}
这里传得handler是为了把某些操作传给当前界面,比如说我一个时间的dialog,点击确认之后,在界面上显示我选择的时间信息
最后我们在activity中使用
private CustomDialog customDialog;customDialog = DialogUtil.loading(mContext,handler);//显示
customDialog.CloseDialog();//关闭这样就完成了
0 0
- 自定义Dialog android Dialog
- 【Android】Dialog以及自定义Dialog
- android 系统Dialog,自定义Dialog
- android 自定义dialog 自定义dialog 宽度问题
- Android 自定义 dialog
- Android 自定义 dialog
- Android 自定义 dialog
- Android 自定义Dialog分类
- Android Dialog( 自定义对话框)
- Android自定义Dialog
- Android-自定义Dialog样式
- Android 自定义Dialog样式
- Android:自定义dialog
- Android 自定义dialog
- Android自定义Dialog对话框
- Android 自定义dialog
- Android自定义Dialog
- Android自定义Dialog
- CheckBox定制勾选框
- webservice 中根据xml 片段,反转xsd 文件,生成java 对象
- Spring中配置数据源的4种形式
- 电子电路设计之工控设备抗干扰总结(单片机电路及PCB设计注意)
- yum update错误Transaction Check Error解决方式
- android-自定义Dialog
- Linux下添加新硬盘,分区及挂载
- DSYM结合友盟错误日志联调bug分析错误
- matlab 图片批量读取
- hdu 2871 -Memory Control--线段树
- Subset I & II
- 卸载Source Insight 3时出现"Could not find the INSTALL.LOG"
- opencv画图函数
- 把word转换成pdf方法与应用