1. package skyseraph.android.util;
  2.  
  3. import skyseraph.easytagwrite.R;
  4. import android.app.Dialog;
  5. import android.content.Context;
  6. import android.content.DialogInterface;
  7. import android.graphics.drawable.Drawable;
  8. import android.view.LayoutInflater;
  9. import android.view.View;
  10. import android.view.ViewGroup.LayoutParams;
  11. import android.widget.Button;
  12. import android.widget.ImageView;
  13. import android.widget.LinearLayout;
  14. import android.widget.TextView;
  15.  
  16. public class CustomDialog extends Dialog {
  17. public CustomDialog(Context context, int theme) {
  18. super(context, theme);
  19. }
  20.  
  21. public CustomDialog(Context context) {
  22. super(context);
  23. }
  24.  
  25. /**
  26. * Helper class for creating a custom dialog
  27. */
  28. public static class Builder {
  29.  
  30. private Context context;
  31.  
  32. private String title;
  33.  
  34. private String message;
  35.  
  36. private String positiveButtonText;
  37.  
  38. private String negativeButtonText;
  39.  
  40. private View contentView;
  41.  
  42. private Drawable drawable;
  43.  
  44. private DialogInterface.OnClickListener positiveButtonClickListener,
  45. negativeButtonClickListener;
  46.  
  47. public Builder(Context context) {
  48. this.context = context;
  49. }
  50.  
  51. /**
  52. * Set the Dialog message from String
  53. *
  54. * @param title
  55. * @return
  56. */
  57. public Builder setMessage(String message) {
  58. this.message = message;
  59. return this;
  60. }
  61.  
  62. /**
  63. * Set the Dialog message from resource
  64. *
  65. * @param title
  66. * @return
  67. */
  68. public Builder setMessage(int message) {
  69. this.message = (String)context.getText(message);
  70. return this;
  71. }
  72.  
  73. /**
  74. * Set the Dialog title from resource
  75. *
  76. * @param title
  77. * @return
  78. */
  79. public Builder setTitle(int title) {
  80. this.title = (String)context.getText(title);
  81. return this;
  82. }
  83.  
  84. /**
  85. * Set the Dialog title from String
  86. *
  87. * @param title
  88. * @return
  89. */
  90. public Builder setTitle(String title) {
  91. this.title = title;
  92. return this;
  93. }
  94.  
  95. /***
  96. * Set the Dialog Icon from resource
  97. *
  98. * @param imageres
  99. * @return
  100. */
  101. public Builder setIcon(int imageres) {
  102.  
  103. this.drawable = context.getResources().getDrawable(imageres);
  104.  
  105. return this;
  106. }
  107.  
  108. /***
  109. * Set the Dialog Icon from Drawable
  110. *
  111. * @param drawable
  112. * @return
  113. */
  114. public Builder setIcon(Drawable drawable) {
  115. this.drawable = drawable;
  116. return this;
  117. }
  118.  
  119. /**
  120. * Set a custom content view for the Dialog. If a message is set, the
  121. * contentView is not added to the Dialog...
  122. *
  123. * @param v
  124. * @return
  125. */
  126. public Builder setContentView(View v) {
  127. this.contentView = v;
  128. return this;
  129. }
  130.  
  131. /**
  132. * Set the positive button resource and it's listener
  133. *
  134. * @param positiveButtonText
  135. * @param listener
  136. * @return
  137. */
  138. public Builder setPositiveButton(int positiveButtonText,
  139. DialogInterface.OnClickListener listener) {
  140. this.positiveButtonText = (String)context.getText(positiveButtonText);
  141. this.positiveButtonClickListener = listener;
  142. return this;
  143. }
  144.  
  145. /**
  146. * Set the positive button text and it's listener
  147. *
  148. * @param positiveButtonText
  149. * @param listener
  150. * @return
  151. */
  152. public Builder setPositiveButton(String positiveButtonText,
  153. DialogInterface.OnClickListener listener) {
  154. this.positiveButtonText = positiveButtonText;
  155. this.positiveButtonClickListener = listener;
  156. return this;
  157. }
  158.  
  159. /**
  160. * Set the negative button resource and it's listener
  161. *
  162. * @param negativeButtonText
  163. * @param listener
  164. * @return
  165. */
  166. public Builder setNegativeButton(int negativeButtonText,
  167. DialogInterface.OnClickListener listener) {
  168. this.negativeButtonText = (String)context.getText(negativeButtonText);
  169. this.negativeButtonClickListener = listener;
  170. return this;
  171. }
  172.  
  173. /**
  174. * Set the negative button text and it's listener
  175. *
  176. * @param negativeButtonText
  177. * @param listener
  178. * @return
  179. */
  180. public Builder setNegativeButton(String negativeButtonText,
  181. DialogInterface.OnClickListener listener) {
  182. this.negativeButtonText = negativeButtonText;
  183. this.negativeButtonClickListener = listener;
  184. return this;
  185. }
  186.  
  187. /**
  188. * Create the custom dialog
  189. */
  190. public CustomDialog create() {
  191. LayoutInflater inflater = (LayoutInflater)context
  192. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  193. // instantiate the dialog with the custom Theme
  194. final CustomDialog dialog = new CustomDialog(context, R.style.Dialog);
  195. View layout = inflater.inflate(R.layout.dialog, null);
  196. dialog.addContentView(layout, new LayoutParams(LayoutParams.MATCH_PARENT,
  197. LayoutParams.WRAP_CONTENT));
  198. // set the dialog title
  199. ((TextView)layout.findViewById(R.id.title)).setText(title);
  200. if (drawable != null) {
  201. ((ImageView)layout.findViewById(R.id.imageView1)).setImageDrawable(drawable);
  202. } else {
  203. ((ImageView)layout.findViewById(R.id.imageView1)).setVisibility(View.GONE);
  204. }
  205. // set the confirm button
  206. if (positiveButtonText != null) {
  207. ((Button)layout.findViewById(R.id.positiveButton)).setText(positiveButtonText);
  208. if (positiveButtonClickListener != null) {
  209. ((Button)layout.findViewById(R.id.positiveButton))
  210. .setOnClickListener(new View.OnClickListener() {
  211. public void onClick(View v) {
  212. positiveButtonClickListener.onClick(dialog,
  213. DialogInterface.BUTTON_POSITIVE);
  214. }
  215. });
  216. }
  217. } else {
  218. // if no confirm button just set the visibility to GONE
  219. layout.findViewById(R.id.positiveButton).setVisibility(View.GONE);
  220. }
  221. // set the cancel button
  222. if (negativeButtonText != null) {
  223. ((Button)layout.findViewById(R.id.negativeButton)).setText(negativeButtonText);
  224. if (negativeButtonClickListener != null) {
  225. ((Button)layout.findViewById(R.id.negativeButton))
  226. .setOnClickListener(new View.OnClickListener() {
  227. public void onClick(View v) {
  228. negativeButtonClickListener.onClick(dialog,
  229. DialogInterface.BUTTON_NEGATIVE);
  230. }
  231. });
  232. }
  233. } else {
  234. // if no confirm button just set the visibility to GONE
  235. layout.findViewById(R.id.negativeButton).setVisibility(View.GONE);
  236. }
  237. // set the content message
  238. if (message != null) {
  239. ((TextView)layout.findViewById(R.id.message)).setText(message);
  240. } else if (contentView != null) {
  241. // if no message set
  242. // add the contentView to the dialog body
  243. ((LinearLayout)layout.findViewById(R.id.content)).removeAllViews();
  244. ((LinearLayout)layout.findViewById(R.id.content)).addView(contentView,
  245. new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  246. }
  247. dialog.setContentView(layout);
  248.  
  249. return dialog;
  250. }
  251.  
  252. }
  253.  
  254. }

Easy Tag Write(3.1)的更多相关文章

  1. Easy Tag Write(3.3)

    package skyseraph.android.util; /** * @Title : Constant.java * @Package : tcl.nfc.tv.util * @ClassNa ...

  2. Easy Tag Write(3.2)

    package skyseraph.android.util; /** * @Title : LogUtil.java * @Package : tcl.nfc.phone.util * @Class ...

  3. Easy Tag Write(2)

    package skyseraph.android.util.nfc; import com.google.common.collect.BiMap; import com.google.common ...

  4. Easy Tag Write(1)

    package skyseraph.easytagwrite; import skyseraph.android.util.CustomDialog; import skyseraph.android ...

  5. [LeetCode] 70. Climbing Stairs_ Easy tag: Dynamic Programming

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  6. [LeetCode] 437. Path Sum III_ Easy tag: DFS

    You are given a binary tree in which each node contains an integer value. Find the number of paths t ...

  7. [LeetCode] 257. Binary Tree Paths_ Easy tag: DFS

    Given a binary tree, return all root-to-leaf paths. Note: A leaf is a node with no children. Example ...

  8. [LeetCode] 101. Symmetric Tree_ Easy tag: BFS

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  9. JUnit5学习之五:标签(Tag)和自定义注解

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. jquery点击元素之外触发事件

    $("#errorMsg_layer").bind("click",function(e){ if($(e.target).closest("#err ...

  2. 还是畅通工程[HDU1233]

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  3. uva10375 Choose and Divide(唯一分解定理)

    uva10375 Choose and Divide(唯一分解定理) 题意: 已知C(m,n)=m! / (n!*(m-n!)),输入整数p,q,r,s(p>=q,r>=s,p,q,r,s ...

  4. 如何解决google ping不通的问题。

    1. 用http://ping.chinaz.com/ ping google的域名. 2. 会ping出很多ip,但是chinaz用的是测试网点去ping的,不是你本地宽带, 所以把ping出ip拷 ...

  5. initWithCoder: 与initWithFrame:的区别

    从nib中加载对象实例时,init:或initWithFrame:都不会调用.而是调用initWithCoder:怎么理解:   有时候,知道initWithFrame方法如何用,但是么有弄明白ini ...

  6. Oracle总结

    摘自:http://www.cnblogs.com/linjiqin/category/283838.html oracle decode用法 select decode( x , 1 , ‘x is ...

  7. ThinPHP基础

    注:约定([书写]规则)胜于配置 *测试连接是否成功:localhost/tp/index.php1.localhost/tp/index.php(入口文件)/Home(模块名)/Index(控制器名 ...

  8. 利用mask layer 勾View

    #define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width #define SCREEN_HEIGHT [[UIScreen main ...

  9. GIT 配置管理

    git版本控制开发流程小结笔记(一) 收藏                                                                     何良瑞Nyanko君 ...

  10. 【转载】APP留存率多少才合格——全面解析留存率

    做产品经理的一般都会关注以下 提高用户留存率 提高用户粘性和活跃度     这些天,有几位朋友都找我聊产品的留存率,有做手游的,做工具的,做社交APP的,于是把以前写过的留存率文章翻出来.   次日留 ...