自定义AlertDialog,模仿Ios弹出框

原创 2015年11月19日 14:19:59

这个是看了网上很多例子后,自己优化改进写出来的例子。用法和安卓原生的显示,可以由用户自行组合出自己想要的弹出框,不会高度定制限定死各种弹出框的UI,每个部件都是独立的,如标题,内容,左按钮,右按钮,底部一个按钮,list等。

下面是界面:



贴上关键代码,MainActivity:

  public void onClick(View v) {
        switch (v.getId()) {
            case R.id.activity_setting_textview_updata:
                new AlertIosDialog(this).builder(R.style.AlertDialogStyle).setTitle("温馨提示").setMsg("发现新版本,建议立即更新使用").setPositiveButton("立即更新", new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), "正在下载更新…", Toast.LENGTH_SHORT).show();
                    }
                }).setNegativeButton("下次再说", new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    }
                }).show();
                break;
            case R.id.activity_setting_textview_getmsg:
                new AlertIosDialog(this).builder(R.style.AlertDialogStyle).setTitle("是否同步消息?").setPositiveButton("确定", new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), "正在同步消息…", Toast.LENGTH_SHORT).show();
                    }
                }).setNegativeButton("取消", new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    }
                }).show();
                break;
            case R.id.activity_setting_textview_loginout:
                new AlertIosDialog(this).builder(R.style.AlertDialogStyle).setMsg("是否退出登录?").setPositiveButton("确定", new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), "退出登录", Toast.LENGTH_SHORT).show();
                    }
                }).setNegativeButton("取消", new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    }
                }).show();
                break;
            case R.id.activity_setting_textview_select_panel:
                new AlertIosDialog(this).builder(R.style.AlertDialogStyle).setAlertDialogSize(1).setSelsctPanel(R.mipmap.ic_launcher, R.mipmap.ic_launcher, "左面板", "右面板").setLeftPanelOnClick(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), "左面板", Toast.LENGTH_SHORT).show();
                    }
                }).setRightPanelOnClick(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), "右面板", Toast.LENGTH_SHORT).show();
                    }
                }).show();
                break;
            case R.id.activity_setting_textview_list:
                //这里的setAlertDialogSize(0.95),不要设置为1否知因外面的布局导致弹出的AlertDialogde 右边出错没有了圆角的背景,原因估计跟andoird画图有些关系吧,具体不明。
                new AlertIosDialog(this).builder(R.style.ActionListDialogStyle).setAlertDialogSize(0.95).setTitle("选择操作").setCancleOnTouchOutside(false).addListItems("条目一", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目二", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目三", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目四", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目五", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目六", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目七", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目八", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目九", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目十", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).setCanaleBtnClickListener("取消", new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    }
                }).show();
                break;

            case R.id.activity_setting_textview_towbtn:
                new AlertIosDialog(this).builder(R.style.AlertDialogStyle).setAlertDialogSize(0.5).addListItems("复制", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "复制" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("删除", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "删除" + which, Toast.LENGTH_SHORT).show();
                    }
                }).show();
                break;
            case R.id.activity_setting_textview_countdown:
                new AlertIosDialog(this).builder(R.style.AlertDialogStyle).setAlertDialogSize(0.5).setTitle("倒数面板").setCountDown(5, "秒后自动跳转页面", new OnTimeAlertViewClickListener() {
                    @Override
                    public void confirm() {
                        Toast.makeText(getApplicationContext(), "删除成功", Toast.LENGTH_SHORT).show();
                    }
                }).setPositiveButton("手动跳转", new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), "跳转成功!", Toast.LENGTH_SHORT).show();
                    }
                }).setCancleOnTouchOutside(false).show();
                break;
            case R.id.activity_setting_textview_bottom:
                new AlertIosDialog(this).builder(R.style.ActionListDialogStyle).setAlertDialogSize(0.95).setCancleOnTouchOutside(false).addListItems("条目一", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).addListItems("条目二", ListItemsColor.Blue, new OnListItemsClickListener() {
                    @Override
                    public void onClick(int which) {
                        Toast.makeText(getApplicationContext(), "item" + which, Toast.LENGTH_SHORT).show();
                    }
                }).setCanaleBtnClickListener("取消", new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    }
                }).show();
                break;

        }


通过上述的setTitle,setMsg,addList等方法组合出自己想要的弹出框吧~

代码下载


iOS---弹出提示对话框的封装

IOS—弹出提示对话框的封装一、就一个选项的对话框代码块#pragma mark - 封装弹出对话框方法 // 提示错误信息 - (void)showError:(NSString *)errorMs...
  • JamieCheung
  • JamieCheung
  • 2016年09月20日 16:21
  • 2378

IOS之自定义对话框

IOS之自定义对话框 由于通过继承UIAlterView来实现自定义对话框的方法在IOS7.0系统中不能再实现,通过查找相关资料寻找到一个相对比较简单而且有效的方法来替代之前的方法。接下来我们将学习...
  • luzhiyong01
  • luzhiyong01
  • 2013年12月23日 16:18
  • 2917

iOS之自定义弹出框--AlertView

有时候系统的UIAlertView不一定能够满足我们的编程需求,需要我们自定义alertView,我写了一个简单的定义了界面有主标题,副标题的UIAlertView 效果如下所示 demo地址:htt...
  • tuwanli125
  • tuwanli125
  • 2015年12月15日 13:53
  • 5228

iOS开发 - UIAlertController 弹框提醒

传统的alertView- (void)alertView { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告" me...
  • wangzi11322
  • wangzi11322
  • 2015年08月30日 11:51
  • 22844

iOS 实现类似弹出窗口

其实要实现这样的效果很简单:  可能很多同学试过,创建一个透明并且背景为黑色的backgroundView,然后覆盖到self.view上,然后再创建一个提示视图promptView,放到backg...
  • qq_33226881
  • qq_33226881
  • 2017年07月19日 11:54
  • 348

iOS 实现类似UIAlertView 和UIAlertController弹窗动画效果

UIAlertView和UIAlertController 项目中使用的很频繁的,但是系统的样式很多时候满足不了我们的需求,这时候我们需要自定义AlertView,但是我们又想做到像系统那样的动画效果...
  • qq_30267937
  • qq_30267937
  • 2017年06月01日 17:35
  • 904

即拿即用-仿IOS风格的弹出框和对话框

github地址:https://github.com/mocn26169/NiceLookingDialog MainActivity: package com.bourne.niceloo...
  • iromkoear
  • iromkoear
  • 2017年04月29日 20:08
  • 987

仿ios各种对话框实现,妈妈再也不用担心了

自定义Dialog的实现版权声明:本文为博主原创文章,未经博主允许不得转载。 首先呢这个需求很普遍,在开发中几乎每个项目都会用到,也比较简单,嘎嘎,博主的 处女作哦,较菜谅解。: 让我们来想想一个D...
  • feng40492459
  • feng40492459
  • 2017年04月22日 02:05
  • 372

仿IOS样式对话框

  • 2017年07月27日 15:38
  • 23.95MB
  • 下载

android实现 仿iphoneDialog实现类似于iphone对话框样式

参考这里:  http://blog.csdn.net/xiechengfa/article/details/40373331
  • lixiaodaoaaa
  • lixiaodaoaaa
  • 2014年11月14日 18:08
  • 16497
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义AlertDialog,模仿Ios弹出框
举报原因:
原因补充:

(最多只允许输入30个字)