Android中仿IOS提示框的实现方法

Android中仿IOS提示框的实现方法,第1张

概述前言在Android开发中,我们有时需要实现类似IOS的对话框。今天我就来总结下,如何通过自定义的开发来实现类似的功能。

前言

在AndroID开发中,我们有时需要实现类似IOS的对话框。今天我就来总结下,如何通过自定义的开发来实现类似的功能。

自定义Dialog

我们知道AndroID中最常用的对话框就是Dialog及其派生类。这次我们通过组合的方式来实现一个类似IOS对话框的效果。我们先来看一下布局效果,这个相信大家都能弄出来,在这里我就贴一下最后的效果图(注意:对话框的边缘是圆角的)。

效果图如下:

我们看到,这个和IOS的对话框已经非常相似了,后面我们需要做的就是将其作为一个组件封装起来,实现AlertDialog那样的调用方式提供给调用者使用。下面我们来看一下整个的封装过程。

1、组合使用Dialog进行对象的构建

/**  * 创建BaseDialog实例  * @return  */ public BaseDialog builder(){  LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  mDialog = new Dialog(mContext,R.style.Dialog);  //设置dialogd出后会点击屏幕,dialog不消失;点击物理返回键dialog消失  mDialog.setCanceledOntouchOutsIDe(false);  VIEw layout = inflater.inflate(R.layout.dialog_normal_layout,null);  mDialog.addContentVIEw(layout,new VIEwGroup.LayoutParams(VIEwGroup.LayoutParams.MATCH_PARENT,VIEwGroup.LayoutParams.WRAP_CONTENT));  //设置Dialog中展示的msg  mMessage=(TextVIEw) layout.findVIEwByID(R.ID.txtMsg);  //设置确认按钮的处理事件  mPositiveBtnText=(TextVIEw) layout.findVIEwByID(R.ID.txtsubmit);  mPositiveBtnText.setonClickListener(new VIEw.OnClickListener() {   @OverrIDe   public voID onClick(VIEw v) {    if (mPositiveBtnClickListener != null) {     mPositiveBtnClickListener.onClick(mDialog,DialogInterface.button_POSITIVE);    }   }  });  mNegativeBtnText=(TextVIEw) layout.findVIEwByID(R.ID.txtCancle);  mNegativeBtnText.setonClickListener(new VIEw.OnClickListener() {   @OverrIDe   public voID onClick(VIEw v) {    if(mNegativeBtnClickListener!=null) {     mNegativeBtnClickListener.onClick(mDialog,DialogInterface.button_NEGATIVE);    }   }  });  mDialog.setContentVIEw(layout);  return this; }

在这段代码中,我们看到第7行代码生成一个Dialog对象,然后通过解析样式文件(XML)通过setContentVIEw方法添加到生成的Dialog对象中。下面的代码我们看到通过解析XML样式文件,来设置Dialog显示的文本、取消、确认按钮触发的事件等 *** 作。重点在最后一行代码return this而不是mDialog。因为通过返回this对象我们可以使用“链式调用”来不断的进行调用设置等 *** 作,类似AndroID中的AlertDialog使用方式。

2、自定义Dialog的一些设置

/**  * 设置Msg  * 支持Resource设置  * @param message  */ public BaseDialog setMessage(int message){  mMessage.setText(mContext.getText(message).toString());  return this; } /**  * 设置Msg  * @param message  */ public BaseDialog setMessage(String message){  mMessage.setText(message);  return this; } public BaseDialog setPositivebutton(int positiveBtnText,DialogInterface.OnClickListener Listener) {  mPositiveBtnText.setText(mContext.getText(positiveBtnText));  mPositiveBtnClickListener = Listener;  return this; } public BaseDialog setPositivebutton(String positiveBtnText,DialogInterface.OnClickListener Listener){  mPositiveBtnText.setText(positiveBtnText);  mPositiveBtnClickListener=Listener;  return this; } public BaseDialog setNegativebutton(int negativeBtnText,DialogInterface.OnClickListener Listener){  mNegativeBtnText.setText(mContext.getText(negativeBtnText));  mNegativeBtnClickListener=Listener;  return this; } public BaseDialog setNegativebutton(String negativeBtnText,DialogInterface.OnClickListener Listener){  mNegativeBtnText.setText(negativeBtnText);  mNegativeBtnClickListener=Listener;  return this; } public voID show(){  mDialog.show(); }

我们看到我们提供了几个比较常用的函数。特别是setPositivebutton等方法,我们直接将事件处理对象传递进来了。下面我们来看下自定义控件的字段定义。代码如下:

public BaseDialog(Context context){  mContext=context; } private Dialog mDialog; protected Context mContext; protected TextVIEw mMessage; protected TextVIEw mPositiveBtnText; protected TextVIEw mNegativeBtnText; protected DialogInterface.OnClickListener mPositiveBtnClickListener; protected DialogInterface.OnClickListener mNegativeBtnClickListener;

我们看到整个自定义Dialog的核心就是mDialog对象,通过组合的方式我们在每一个BaseDialog对象内部都会有一个Dialog对象,BaseDailog对象只是提供了一些外围的显示功能。核心的例如隐藏、显示、d出效果等方式依赖于嵌入的mDialog对象的。

下面我们来看一下自定义Dialog的调用方式。代码如下:

/** * d出电话确认按钮 */new BaseDialog(getActivity())  .builder()  .setMessage("15895991339")  .setPositivebutton("确认",new DialogInterface.OnClickListener() {   @OverrIDe   public voID onClick(DialogInterface dialog,int which) {    Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:15895991339"));    startActivity(intent);    dialog.dismiss();   }  }).setNegativebutton("取消",int which) {    dialog.dismiss();   }  }).show();

我们看到,调用方式和AlertDialog的使用方式很相似。

以上这篇AndroID中仿IOS提示框的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android中仿IOS提示框的实现方法全部内容,希望文章能够帮你解决Android中仿IOS提示框的实现方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1143146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存