Android如何实现类似iOS风格的对话框

这篇文章将为大家详细讲解有关Android如何实现类似iOS风格的对话框,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站建设、成都网站设计、鲁甸网络推广、小程序定制开发、鲁甸网络营销、鲁甸企业策划、鲁甸品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供鲁甸建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

分享一个简单的常用的对话框类,按照国际惯例,先上图

Android如何实现类似iOS风格的对话框

布局简单,先上布局。一个标题,一个内容,两个按钮


 
  
  
  
  
   

接着就是自定义类!

首先,新建类继承Dialog

public class CommonDialog extends Dialog

接着是构造函数,在构造函数中定义样式

public CommonDialog(@NonNull Context context) {
  super(context, R.style.dialog_Common);
  mContext = context;
  setContentView(R.layout.dialog_common);
  ButterKnife.bind(this);
 }

其中,在style中定义对话框属性


  
  @null
  
  true
  
  @android:color/transparent
  
  true
  
  @null
  
  true
  
  true
  
  0.4
 

紧接着,提供四个变量来存储设置的标题、内容以及两个按钮的文字

private String title;
private String content;
private String cancel;
private String ensure;

现在需要提供能够设置标题、内容以及两个按钮的文字的方法

 /*
  * 设置标题 默认没有标题
  *
  * @param title
  */ 
 public void setTitle(String title) {
  this.title = title;
 }
 /**
  * 设置内容 默认为空
  *
  * @param content
  */
 public void setContent(String content) {
  this.content = content;
 }
 /**
  * 设置确定按钮内容 默认为确定
  *
  * @param ensure
  */
 public void setEnsure(String ensure) {
  this.ensure = ensure;
 }
 /**
  * 设置取消按钮内容 默认为取消
  *
  * @param cancel
  */
 public void setCancel(String cancel) {
  this.cancel = cancel;
 }

现在,处理按钮的点击事件

/**
  * 确定按钮事件监听 默认是dismiss对话框
  *
  * @param onEnsureClickListener
  */
 public void setOnEnsureClickListener(View.OnClickListener onEnsureClickListener) {
  this.onEnsureClickListener = onEnsureClickListener;
 }
 /**
  * 取消按钮事件监听 默认是dismiss对话框
  *
  * @param onCabcelClickListener
  */
 public void setOnCancelClickListener(View.OnClickListener onCabcelClickListener) {
  this.onCancelClickListener = onCabcelClickListener;
 }

默认的是点击对话框消失

 /**
  * 默认点击事件,点击弹框消失
  */
 private View.OnClickListener onClickListenerDismiss = new View.OnClickListener() {
  @Override
  public void onClick(View v) {
   dismiss();
  }
 };

最后,重写父类的show方法,将展示之前设置的各种信息

/**
  * 重写show方法
  */
 @Override
 public void show() {
  if (TextUtils.isEmpty(title)) {
   //默认没有标题
   dialogTitle.setVisibility(View.GONE);
  } else {
   //默认不设置内容,则内容太为空
   dialogTitle.setVisibility(View.VISIBLE);
   setTextViewTxt(dialogTitle, title);
  }
  if (TextUtils.isEmpty(cancel)) {
   //默认取消按钮文字为"取消"
   cancel = mContext.getString(R.string.cancel);
  }
  if (TextUtils.isEmpty(ensure)) {
   //默认确认按钮文字为"确认"
   ensure = mContext.getString(R.string.ensure);
  }
  //设置文字信息
  setTextViewTxt(dialogContent, content);
  setTextViewTxt(dialogCancel, cancel);
  setTextViewTxt(dialogEnsure, ensure);
   //设置点击事件
  setButtonOnClickListener(dialogCancel, onCancelClickListener);
  setButtonOnClickListener(dialogEnsure, onEnsureClickListener);
  super.show();
 }

最最后,献上在Activity中如何使用该对话框的方法的代码

public class MainActivity extends AppCompatActivity {
 @BindView(R.id.btn_demo_haveTitle)
 Button btnDemoHaveTitle;
 @BindView(R.id.btn_demo_noTitle)
 Button btnDemoNoTitle;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
  ButterKnife.bind(this);
 }
 @OnClick({R.id.btn_demo_haveTitle, R.id.btn_demo_noTitle})
 public void onClick(View view) {
  switch (view.getId()) {
   //没有标题的对话框
   case R.id.btn_demo_haveTitle:
    final CommonDialog dialog1 = new CommonDialog(this);
    dialog1.setTitle("提示");
    dialog1.setContent("是否确认退出?");
    dialog1.setOnEnsureClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
      Toast.makeText(MainActivity.this,"点击了确认",Toast.LENGTH_SHORT).show();
      // TODO: 2017/9/17 这里写你的代码
      dialog1.dismiss();
     }
    });
    dialog1.show();
    break;
   //有标题的对话框
   case R.id.btn_demo_noTitle:
    final CommonDialog dialog2 = new CommonDialog(this);
    //不设置标题默认没有标题
    dialog2.setContent("是否确认退出?");
    dialog2.setOnEnsureClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
      Toast.makeText(MainActivity.this,"点击了确认",Toast.LENGTH_SHORT).show();
      // TODO: 2017/9/17 这里写你的代码
      dialog2.dismiss();
     }
    });
    dialog2.show();
    break;
  }
 }
}

关于“Android如何实现类似iOS风格的对话框”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


分享标题:Android如何实现类似iOS风格的对话框
本文来源:http://scyanting.com/article/pochcg.html