【移动应用开发技术】Android中如何实现仿IOS提示框_第1页
【移动应用开发技术】Android中如何实现仿IOS提示框_第2页
【移动应用开发技术】Android中如何实现仿IOS提示框_第3页
【移动应用开发技术】Android中如何实现仿IOS提示框_第4页
免费预览已结束,剩余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);

//设置dialog弹出后会点击屏幕,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显示的文本、取消、确认按钮触发的事件等操作。重点在最后一行代码returnthis而不是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对象只是提供了一些外围的显示功能。核心的例如隐藏、显示、弹出效果等方式依赖于嵌入的mDialog对象的。下面我们来看一下自定义Dialog的调用方式。代码如下:/**

*

弹出电话确认按钮

*/

new

BaseDialog(getActivity())

.builder()

.setMessage()

.setPositiveButton("确认",

new

DialogInterface.OnClickListener()

{

@Override

public

void

onClick(DialogInterface

dialog,

int

which)

{

Intent

intent

=

new

Intent(Intent.ACTION_DIAL,

Uri.parse("tel));

startActivity(inten

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论