仿iOS弹窗


一、先上效果图

二、GitHub地址

GitHub地址 https://github.com/MNXP/MyDialog

三、使用

1)基本使用

myDialog = new AlertDialog(this).builder();
myDialog.setGone().setTitle("提示").setMsg("仿iOS的弹窗").setNegativeButton("取消",null).setPositiveButton("确定", new View.OnClickListener() {@Overridepublic void onClick(View v) {}}).show();复制代码

2)修改按钮文字颜色

 myDialog.setGone().setMsg("仿iOS的弹窗,看看实际效果如何呢,仿iOS的弹窗,仿iOS的弹窗").setNegativeButton("取消",R.color.colorAccent,null).setPositiveButton("确定",R.color.colorAccent,null).show();复制代码

3)弹窗一个按钮

  myDialog.setGone().setMsg("仿iOS的弹窗").setPositiveButton("确定",null).show();或myDialog.setGone().setMsg("仿iOS的弹窗").setNegativeButton("确定",null).show();
复制代码

4)dialog完整代码

/**** 弹框提示*/
public class AlertDialog {private Context context;private Dialog dialog;private LinearLayout lLayout_bg;private TextView txt_title;private TextView txt_msg;private Button btn_neg;private Button btn_pos;private ImageView img_line;private Display display;private boolean showTitle = false;private boolean showMsg = false;private boolean showPosBtn = false;private boolean showNegBtn = false;public AlertDialog(Context context) {this.context = context;WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);display = windowManager.getDefaultDisplay();}public AlertDialog builder() {View view = LayoutInflater.from(context).inflate(R.layout.view_alert_dialog, null);lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);txt_title = (TextView) view.findViewById(R.id.txt_title);txt_msg = (TextView) view.findViewById(R.id.txt_msg);btn_neg = (Button) view.findViewById(R.id.btn_neg);btn_pos = (Button) view.findViewById(R.id.btn_pos);img_line = (ImageView) view.findViewById(R.id.img_line);setGone();dialog = new Dialog(context, R.style.AlertDialogStyle);dialog.setContentView(view);lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display.getWidth() * 0.85), LayoutParams.WRAP_CONTENT));return this;}/*** 恢复初始* @return*/public AlertDialog setGone() {if (lLayout_bg != null) {txt_title.setVisibility(View.GONE);txt_msg.setVisibility(View.GONE);btn_neg.setVisibility(View.GONE);btn_pos.setVisibility(View.GONE);img_line.setVisibility(View.GONE);}showTitle = false;showMsg = false;showPosBtn = false;showNegBtn = false;return this;}/*** 设置title* @param title* @return*/public AlertDialog setTitle(String title) {showTitle = true;if (TextUtils.isEmpty(title)) {txt_title.setText("提示");} else {txt_title.setText(title);}return this;}/*** 设置Message* @param msg* @return*/public AlertDialog setMsg(String msg) {showMsg = true;if (TextUtils.isEmpty(msg)) {txt_msg.setText("");} else {txt_msg.setText(msg);}return this;}/*** 设置点击外部是否消失* @param cancel* @return*/public AlertDialog setCancelable(boolean cancel) {dialog.setCancelable(cancel);return this;}/*** 右侧按钮** @param text* @param listener* @return*/public AlertDialog setPositiveButton(String text,final OnClickListener listener) {return setPositiveButton(text, -1, listener);}public AlertDialog setPositiveButton(String text, int color,final OnClickListener listener) {showPosBtn = true;if ("".equals(text)) {btn_pos.setText("");} else {btn_pos.setText(text);}if (color == -1) {color = R.color.action_sheet_blue;}btn_pos.setTextColor(ContextCompat.getColor(context, color));btn_pos.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (listener != null)listener.onClick(v);dismiss();}});return this;}/*** 左侧按钮** @param text* @param listener* @return*/public AlertDialog setNegativeButton(String text,final OnClickListener listener) {return setNegativeButton(text, -1, listener);}public AlertDialog setNegativeButton(String text, int color,final OnClickListener listener) {showNegBtn = true;if ("".equals(text)) {btn_neg.setText("");} else {btn_neg.setText(text);}if (color == -1) {color = R.color.action_sheet_blue;}btn_neg.setTextColor(ContextCompat.getColor(context, color));btn_neg.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (listener != null)listener.onClick(v);dismiss();}});return this;}/*** 设置显示*/private void setLayout() {if (!showTitle && !showMsg) {txt_title.setText("");txt_title.setVisibility(View.VISIBLE);}if (showTitle) {txt_title.setVisibility(View.VISIBLE);}if (showMsg) {txt_msg.setVisibility(View.VISIBLE);}if (!showPosBtn && !showNegBtn) {btn_pos.setText("");btn_pos.setVisibility(View.VISIBLE);btn_pos.setBackgroundResource(R.drawable.alert_dialog_selector);btn_pos.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});}if (showPosBtn && showNegBtn) {btn_pos.setVisibility(View.VISIBLE);btn_pos.setBackgroundResource(R.drawable.alert_dialog_right_selector);btn_neg.setVisibility(View.VISIBLE);btn_neg.setBackgroundResource(R.drawable.alert_dialog_left_selector);img_line.setVisibility(View.VISIBLE);}if (showPosBtn && !showNegBtn) {btn_pos.setVisibility(View.VISIBLE);btn_pos.setBackgroundResource(R.drawable.alert_dialog_selector);}if (!showPosBtn && showNegBtn) {btn_neg.setVisibility(View.VISIBLE);btn_neg.setBackgroundResource(R.drawable.alert_dialog_selector);}}public void show() {setLayout();dialog.show();}public boolean isShowing() {if (dialog != null) {if (dialog.isShowing())return true;elsereturn false;}return false;}public void dismiss() {if (dialog!=null){dialog.dismiss();}}
}复制代码

如有意见和建议,及时沟通。

转载于:https://juejin.im/post/5b8cee6251882542b366d447

Android 仿iOS弹窗相关推荐

  1. android rebound平移,Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout

    Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout 前言 IOS 拖拽回弹给用户的体验不得不赞然后 Android 原生的 API 各种不支持, 于是乎出现的很多仿 IO ...

  2. android仿ios弹框_在“提示”框中:iOS外观(在Android上运行),Google Maps作为Time Machine,下载Wii游戏保存...

    android仿ios弹框 Once a week we round up some great reader tips and share them with everyone. Read on t ...

  3. android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码

    用过iphone的朋友相信都体验过页面上拉下拉有一个弹性的效果,使用起来用户体验很好:Android并没有给我们封装这样一个效果,我们来看下在Android里如何实现这个效果.先看效果,感觉有些时候还 ...

  4. android 密码解锁程序,android 仿ios数字密码解锁界面的实例

    如下所示: 每个Android开发人员都知道,现在android的解锁最常用的就是九宫格解锁,ios的解锁常用的是数字密码解锁.而我们在开发工程中,很多时候,都需要android和ios进行结合.有的 ...

  5. Android仿IOS解锁密码界面-自定义view系列(6)

    Android仿IOS解锁密码界面-自定义view系列 功能简介 主要实现步骤-具体内容看github项目里的代码 xml相关属性设置 Android Studio 代码 Android技术生活交流 ...

  6. android 按钮回弹效果,Android仿IOS回弹效果 支持任何控件

    本文实例为大家分享了Android仿IOS回弹效果的具体代码,供大家参考,具体内容如下 效果图: 导入依赖: dependencies { // ... compile 'me.everything: ...

  7. Android仿IOS滑动关机-自定义view系列(6)

    Android仿IOS滑动关机-自定义view系列 功能简介 GIf演示 主要实现步骤-具体内容看github项目里的代码 Android技术生活交流 更多其他页面-自定义View-实用功能合集:点击 ...

  8. Android仿IOS吸边弹簧阻尼移动组件SpringMovingView-自定义view系列(3)

    () Android仿ios吸边弹簧阻尼效果的移动组件SpringMovingView 功能简介 Android技术生活交流 Gif演示 实现步骤 java代码 Android技术生活交流 更多其他页 ...

  9. android 布局回弹,Android仿IOS回弹效果 支持任何控件

    本文实例为大家分享了Android仿IOS回弹效果的具体代码,供大家参考,具体内容如下 效果图: 导入依赖: dependencies { // ... compile 'me.everything: ...

最新文章

  1. 201671030129 周婷 《英文文本统计分析》结对项目报告
  2. 华人博士提出原型对比学习,非监督学习效果远超MoCo和SimCLR
  3. linux的那些破事
  4. rtmp推流直播流程
  5. python标准输入输出用来干什么_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...
  6. 文本分类(一)EWECT微博情绪分类大赛第三名Bert-Last_3embedding_concat最优单模型复现
  7. JSP -- JSP语法
  8. 文件操作函数(读写)
  9. android imageview 图片切换动画,在Android中以动画方式将ImageView移动到不同的位置...
  10. 利用matlab guide制作简易计算器
  11. java finalize逃脱_finalize(),析构函数(finalization)
  12. python课后题答案第二章_Python编程:从入门到实践——练习题答案(第二章)
  13. php手册学习怎样,PHP新手之如何学习PHP的讲解
  14. GX works2 中的块的创建与使用方法
  15. NYOJ 305 表达式求值 (字符串处理)
  16. 关键词组合工具_8大工具组合出击,解决扩量难题
  17. 电脑远程连接已停止工作 解决方案
  18. 英语单词前缀规则总结
  19. P9 力荐!阿里巴巴最新出品 776 页 JDK 源码 + 并发核心原理解析小册
  20. 行星轨迹制作_用3ds max制作三维行星运动动画

热门文章

  1. php安装包解压后,ps下载后怎么解压安装
  2. 用python可以解决什么问题_学 Python 能帮你解决什么问题 ?
  3. recovery升级是显示进度条_注意!税控系统软件升级了,还有疑问看这里!
  4. object转class_从零并发框架(三)异步转同步注解+字节码增强代理实现
  5. .sh文件是什么语言_关于Linux文件的一些基本命令和知识:
  6. count和distinct如何一起使用_轻松玩转乐高积木:教你如何使用颗粒分离器
  7. python中列表的值与内存地址_python---列表、元组
  8. java中位运算传参_java基础之位运算讲解于实战
  9. sapi cli php mac,make: *** [sapi/cli/php] Error 1 解决办法
  10. JAVA中常用接口的介绍及使用示例 java lang Comparable