http://blog.csdn.net/zhufuing/article/details/18735371

http://blog.csdn.net/zhufuing/article/details/18735371

http://blog.csdn.net/zhufuing/article/details/18735371

http://blog.csdn.net/zhufuing/article/details/18735371

http://blog.csdn.net/zhufuing/article/details/18735371







Android仿IOS UIAlertView对话框

分类:Androidapp 986人阅读 评论(3) 收藏 举报 Android UIAlertView 仿IOS 提示框

目录(?)[+]

显示效果:



我在参考链接中看到了作者的仿的qq提示框,但是在使用的时候并不是很方面,有一些不足,于是我参照Android系统AlertDialog,使用参考链接中的布局文件和style文件,用自己的方法自定义了一下这个仿IOS上面UIAlertView的效果,这样的话让我们可以想使用系统AlertDialog一样使用我自定义的CustomDialog。

CustomDialog使用代码:

[java] view plain copy
  1. packagecom.example.iosalertview;
  2. importandroid.app.Activity;
  3. importandroid.app.AlertDialog;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.View.OnClickListener;
  7. importandroid.widget.Button;
  8. importcom.example.iosalertview.CustomDialog.Builder;
  9. publicclassMainActivityextendsActivityimplementsOnClickListener{
  10. privateButtonios_dialog_btn,android_dialog_btn;
  11. @Override
  12. protectedvoidonCreate(BundlesavedInstanceState){
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15. ios_dialog_btn=(Button)findViewById(R.id.ios_dialog_btn);
  16. android_dialog_btn=(Button)findViewById(R.id.android_dialog_btn);
  17. ios_dialog_btn.setOnClickListener(this);
  18. android_dialog_btn.setOnClickListener(this);
  19. }
  20. @Override
  21. publicvoidonClick(Viewv){
  22. switch(v.getId()){
  23. caseR.id.ios_dialog_btn:
  24. CustomDialog.Builderbuilder=newBuilder(MainActivity.this);
  25. builder.setTitle(R.string.prompt);
  26. builder.setMessage(R.string.exit_app);
  27. builder.setPositiveButton(R.string.confirm,null);
  28. builder.setNegativeButton(R.string.cancel,null);
  29. builder.create().show();
  30. break;
  31. caseR.id.android_dialog_btn:
  32. AlertDialog.Buildermbuilder=newAlertDialog.Builder(MainActivity.this);
  33. mbuilder.setTitle(R.string.prompt);
  34. mbuilder.setMessage(R.string.exit_app);
  35. mbuilder.setPositiveButton(R.string.confirm,null);
  36. mbuilder.setNegativeButton(R.string.cancel,null);
  37. mbuilder.create().show();
  38. break;
  39. default:
  40. break;
  41. }
  42. }
  43. }

自定义CustomDialog代码:

[java] view plain copy
  1. packagecom.example.iosalertview;
  2. importandroid.app.Dialog;
  3. importandroid.content.Context;
  4. importandroid.content.DialogInterface;
  5. importandroid.view.LayoutInflater;
  6. importandroid.view.View;
  7. importandroid.view.ViewGroup.LayoutParams;
  8. importandroid.widget.Button;
  9. importandroid.widget.LinearLayout;
  10. importandroid.widget.TextView;
  11. publicclassCustomDialogextendsDialog{
  12. publicCustomDialog(Contextcontext){
  13. super(context);
  14. }
  15. publicCustomDialog(Contextcontext,inttheme){
  16. super(context,theme);
  17. }
  18. publicstaticclassBuilder{
  19. privateContextcontext;//上下文对象
  20. privateStringtitle;//对话框标题
  21. privateStringmessage;//对话框内容
  22. privateStringconfirm_btnText;//按钮名称“确定”
  23. privateStringcancel_btnText;//按钮名称“取消”
  24. privateViewcontentView;//对话框中间加载的其他布局界面
  25. /*按钮坚挺事件*/
  26. privateDialogInterface.OnClickListenerconfirm_btnClickListener;
  27. privateDialogInterface.OnClickListenercancel_btnClickListener;
  28. publicBuilder(Contextcontext){
  29. this.context=context;
  30. }
  31. /*设置对话框信息*/
  32. publicBuildersetMessage(Stringmessage){
  33. this.message=message;
  34. returnthis;
  35. }
  36. /**
  37. *SettheDialogmessagefromresource
  38. *
  39. *@paramtitle
  40. *@return
  41. */
  42. publicBuildersetMessage(intmessage){
  43. this.message=(String)context.getText(message);
  44. returnthis;
  45. }
  46. /**
  47. *SettheDialogtitlefromresource
  48. *
  49. *@paramtitle
  50. *@return
  51. */
  52. publicBuildersetTitle(inttitle){
  53. this.title=(String)context.getText(title);
  54. returnthis;
  55. }
  56. /**
  57. *SettheDialogtitlefromString
  58. *
  59. *@paramtitle
  60. *@return
  61. */
  62. publicBuildersetTitle(Stringtitle){
  63. this.title=title;
  64. returnthis;
  65. }
  66. /**
  67. *设置对话框界面
  68. *@paramvView
  69. *@return
  70. */
  71. publicBuildersetContentView(Viewv){
  72. this.contentView=v;
  73. returnthis;
  74. }
  75. /**
  76. *Setthepositivebuttonresourceandit'slistener
  77. *
  78. *@paramconfirm_btnText
  79. *@return
  80. */
  81. publicBuildersetPositiveButton(intconfirm_btnText,
  82. DialogInterface.OnClickListenerlistener){
  83. this.confirm_btnText=(String)context
  84. .getText(confirm_btnText);
  85. this.confirm_btnClickListener=listener;
  86. returnthis;
  87. }
  88. /**
  89. *Setthepositivebuttonandit'slistener
  90. *
  91. *@paramconfirm_btnText
  92. *@return
  93. */
  94. publicBuildersetPositiveButton(Stringconfirm_btnText,
  95. DialogInterface.OnClickListenerlistener){
  96. this.confirm_btnText=confirm_btnText;
  97. this.confirm_btnClickListener=listener;
  98. returnthis;
  99. }
  100. /**
  101. *Setthenegativebuttonresourceandit'slistener
  102. *
  103. *@paramconfirm_btnText
  104. *@return
  105. */
  106. publicBuildersetNegativeButton(intcancel_btnText,
  107. DialogInterface.OnClickListenerlistener){
  108. this.cancel_btnText=(String)context
  109. .getText(cancel_btnText);
  110. this.cancel_btnClickListener=listener;
  111. returnthis;
  112. }
  113. /**
  114. *Setthenegativebuttonandit'slistener
  115. *
  116. *@paramconfirm_btnText
  117. *@return
  118. */
  119. publicBuildersetNegativeButton(Stringcancel_btnText,
  120. DialogInterface.OnClickListenerlistener){
  121. this.cancel_btnText=cancel_btnText;
  122. this.cancel_btnClickListener=listener;
  123. returnthis;
  124. }
  125. publicCustomDialogcreate(){
  126. LayoutInflaterinflater=(LayoutInflater)context
  127. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  128. //instantiatethedialogwiththecustomTheme
  129. finalCustomDialogdialog=newCustomDialog(context,R.style.mystyle);
  130. Viewlayout=inflater.inflate(R.layout.customdialog,null);
  131. dialog.addContentView(layout,newLayoutParams(
  132. LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
  133. //setthedialogtitle
  134. ((TextView)layout.findViewById(R.id.title)).setText(title);
  135. ((TextView)layout.findViewById(R.id.title)).getPaint().setFakeBoldText(true);;
  136. //settheconfirmbutton
  137. if(confirm_btnText!=null){
  138. ((Button)layout.findViewById(R.id.confirm_btn))
  139. .setText(confirm_btnText);
  140. if(confirm_btnClickListener!=null){
  141. ((Button)layout.findViewById(R.id.confirm_btn))
  142. .setOnClickListener(newView.OnClickListener(){
  143. publicvoidonClick(Viewv){
  144. confirm_btnClickListener.onClick(dialog,
  145. DialogInterface.BUTTON_POSITIVE);
  146. }
  147. });
  148. }
  149. }else{
  150. //ifnoconfirmbuttonjustsetthevisibilitytoGONE
  151. layout.findViewById(R.id.confirm_btn).setVisibility(
  152. View.GONE);
  153. }
  154. //setthecancelbutton
  155. if(cancel_btnText!=null){
  156. ((Button)layout.findViewById(R.id.cancel_btn))
  157. .setText(cancel_btnText);
  158. if(cancel_btnClickListener!=null){
  159. ((Button)layout.findViewById(R.id.cancel_btn))
  160. .setOnClickListener(newView.OnClickListener(){
  161. publicvoidonClick(Viewv){
  162. cancel_btnClickListener.onClick(dialog,
  163. DialogInterface.BUTTON_NEGATIVE);
  164. }
  165. });
  166. }
  167. }else{
  168. //ifnoconfirmbuttonjustsetthevisibilitytoGONE
  169. layout.findViewById(R.id.cancel_btn).setVisibility(
  170. View.GONE);
  171. }
  172. //setthecontentmessage
  173. if(message!=null){
  174. ((TextView)layout.findViewById(R.id.message)).setText(message);
  175. }elseif(contentView!=null){
  176. //ifnomessageset
  177. //addthecontentViewtothedialogbody
  178. ((LinearLayout)layout.findViewById(R.id.message))
  179. .removeAllViews();
  180. ((LinearLayout)layout.findViewById(R.id.message)).addView(
  181. contentView,newLayoutParams(
  182. LayoutParams.WRAP_CONTENT,
  183. LayoutParams.WRAP_CONTENT));
  184. }
  185. dialog.setContentView(layout);
  186. returndialog;
  187. }
  188. }
  189. }

demo下载地址:

http://download.csdn.net/detail/zhufuing/7048455


参考连接:

http://www.apkbus.com/forum.php?mod=viewthread&tid=160284

4

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. Android(安卓)拨号器的简单实现
  6. android 使用html5作布局文件: webview跟javascript交互
  7. android用户界面之按钮(Button)教程实例汇
  8. Android开发环境搭建
  9. Android(安卓)Resource介绍和使用

随机推荐

  1. android 栈方式退出
  2. cocos2d-x android 调试
  3. Android MediaRecorder 小结
  4. Android app的电子书翻页卷曲功能
  5. 使用命令行ls命令的Android文件浏览控件,
  6. 如何启动 instrumentation ?(android )
  7. Android开发问题集结贴(持续更新)
  8. android 如何连接默认浏览器
  9. Androidの各国语言列表
  10. Android横竖屏的设置和使用