下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 结合中西医疗技术的探索
- 化工安全生产与环境保护管理措施研究
- 石河子大学《债法》2022-2023学年第一学期期末试卷
- 石河子大学《土木工程材料》2022-2023学年第一学期期末试卷
- 石河子大学《人力资源管理》2023-2024学年第一学期期末试卷
- 石河子大学《当代国际共产主义运动》2023-2024学年第一学期期末试卷
- 沈阳理工大学《运动控制基础》2022-2023学年期末试卷
- 沈阳理工大学《汽车构造》2022-2023学年第一学期期末试卷
- 造价年终总结汇报
- 沈阳理工大学《工程力学》2023-2024学年第一学期期末试卷
- 《中国当代文艺思潮》第二章主体论文艺思潮
- 北理c语言上机答案(全)
- 大学生创新思维与创新能力培养的实践探索模板课件
- DB63-T 1674-2018+多年冻土区+公路隧道技术规范
- 双向情感障碍
- 统编语文教材的主要特点和教学建议(课堂PPT)课件
- 胃溃疡 演示文稿课件
- 腹腔镜胆囊切除术后胆瘘
- ESD的防护常识幻灯片
- 传感器课程设计基于的温度测量系统
- 苏武传 省赛获奖-完整版课件
评论
0/150
提交评论