找到个开源项目。github:https://github.com/pedant/sweet-alert-dialog

效果图:https://raw.githubusercontent.com/pedant/sweet-alert-dialog/master/change_type.gif

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQW5kZHJvaWRfTGFuWWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

build.gradle

  1. compile 'cn.pedant.sweetalert:library:1.3'

colors.xml

  1. <?
  2.  
  3. xml version="1.0" encoding="utf-8"?
  4.  
  5. >
  6. <resources>
  7. <color name="alertDialog_Progress_Color">#ff4c72dc</color>
  8. <color name="alertDialog_Progress_hintColor">#40dcd8d5</color>
  9. </resources>

attrs.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <declare-styleable name="ProgressWheel">
  4. <attr name="progressIndeterminate" format="boolean" />
  5. <attr name="barColor" format="color" />
  6. <attr name="rimColor" format="color" />
  7. <attr name="rimWidth" format="dimension" />
  8. <attr name="spinSpeed" format="float" />
  9. <attr name="barSpinCycleTime" format="integer" />
  10. <attr name="circleRadius" format="dimension" />
  11. <attr name="fillRadius" format="boolean" />
  12. <attr name="barWidth" format="dimension" />
  13. </declare-styleable>
  14. <!-- From: file:/Users/nicolas/AndroidProjects/materialish-progress/library/src/main/res/values/strings.xml -->
  15. <eat-comment />
  16. <string name="app_name">Library</string>
  17. </resources>

測试界面:



測试类 MainActivity

  1. import android.graphics.Color;
  2. import android.view.View;
  3. import android.widget.Button;
  4.  
  5. import com.lidroid.xutils.view.annotation.ViewInject;
  6. import com.lidroid.xutils.view.annotation.event.OnClick;
  7.  
  8. import cn.pedant.SweetAlert.SweetAlertDialog;
  9.  
  10. /**
  11. * Created by Administrator on 2015/7/1.
  12. */
  13. public class MainActivity extends BasicActivity {
  14.  
  15. @ViewInject(R.id.sweetAlertDialog)
  16. private Button btSweetAlertDialog;
  17.  
  18. @ViewInject(R.id.basicMessage)
  19. private Button btBasicMessage;
  20.  
  21. //...
  22.  
  23. @Override
  24. public int getLayoutID() {
  25. return R.layout.activity_main;
  26. }
  27.  
  28. @OnClick({R.id.sweetAlertDialog,R.id.basicMessage,R.id.titleUnder,R.id.error,R.id.warning,R.id.success,R.id.custom_icon,R.id.confirm_button,R.id.cancel_bindlistener,R.id.opup_confirming})
  29. public void onClick(View v) {
  30. switch (v.getId()) {
  31. case R.id.sweetAlertDialog:
  32. showSweetAlertDialog();
  33. break;
  34. case R.id.basicMessage:
  35. showBasicMessage();
  36. break;
  37. case R.id.titleUnder:
  38. showTitleUnder();
  39. break;
  40. case R.id.error:
  41. showError();
  42. break;
  43. case R.id.warning:
  44. showWarning();
  45. break;
  46. case R.id.success:
  47. showSuccess();
  48. break;
  49. case R.id.custom_icon:
  50. showCustmIcon();
  51. break;
  52. case R.id.confirm_button:
  53. showConfirming();
  54. break;
  55. case R.id.cancel_bindlistener:
  56. showCancelBind();
  57. break;
  58. case R.id.opup_confirming:
  59. showPupConfirming();
  60. break;
  61. default:
  62. break;
  63. }
  64. }
  65.  
  66. private void showSweetAlertDialog() {
  67. final SweetAlertDialog pDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE);
  68. pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.alertDialog_Progress_Color));
  69. pDialog.getProgressHelper().setBarWidth(5);
  70. pDialog.getProgressHelper().setCircleRadius(100);
  71. pDialog.getProgressHelper().setRimColor(getResources().getColor(R.color.alertDialog_Progress_hintColor));
  72. pDialog.getProgressHelper().setRimWidth(5);
  73. pDialog.setTitleText("载入中..");
  74. pDialog.setCancelable(false);
  75. pDialog.show();
  76. dismiss(pDialog);
  77. }
  78.  
  79. private void showBasicMessage() {
  80. SweetAlertDialog pDialog=new SweetAlertDialog(this)
  81. .setTitleText("Here's a message!");
  82. pDialog.show();
  83. }
  84.  
  85. private void showTitleUnder() {
  86. new SweetAlertDialog(this)
  87. .setTitleText("Here's a message!")
  88. .setContentText("It's pretty, isn't it?
  89.  
  90. ")
  91. .show();
  92. }
  93.  
  94. private void showError(){
  95. new SweetAlertDialog(this, SweetAlertDialog.ERROR_TYPE)
  96. .setTitleText("Oops...")
  97. .setContentText("Something went wrong!")
  98. .show();
  99. }
  100.  
  101. private void showWarning(){
  102. new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
  103. .setTitleText("Are you sure?")
  104. .setContentText("Won't be able to recover this file!")
  105. .setConfirmText("Yes,delete it!")
  106. .show();
  107. }
  108.  
  109. private void showSuccess(){
  110. new SweetAlertDialog(this, SweetAlertDialog.SUCCESS_TYPE)
  111. .setTitleText("Good job!")
  112. .setContentText("You clicked the button!")
  113. .show();
  114. }
  115.  
  116. private void showCustmIcon(){
  117. new SweetAlertDialog(this, SweetAlertDialog.CUSTOM_IMAGE_TYPE)
  118. .setTitleText("Sweet!")
  119. .setContentText("Here's a custom image.")
  120. .setCustomImage(R.drawable.ic_launcher)
  121. .show();
  122. }
  123.  
  124. private void showConfirming(){
  125. new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
  126. .setTitleText("Are you sure?
  127.  
  128. ")
  129. .setContentText("Won't be able to recover this file!")
  130. .setConfirmText("Yes,delete it!")
  131. .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
  132. @Override
  133. public void onClick(SweetAlertDialog sDialog) {
  134. sDialog.dismissWithAnimation();
  135. }
  136. })
  137. .show();
  138. }
  139.  
  140. private void showCancelBind(){
  141. new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
  142. .setTitleText("Are you sure?")
  143. .setContentText("Won't be able to recover this file!")
  144. .setCancelText("No,cancel plx!")
  145. .setConfirmText("Yes,delete it!")
  146. .showCancelButton(true)
  147. .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {
  148. @Override
  149. public void onClick(SweetAlertDialog sDialog) {
  150. sDialog.cancel();
  151. }
  152. })
  153. .show();
  154. }
  155.  
  156. private void showPupConfirming(){
  157. new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
  158. .setTitleText("Are you sure?")
  159. .setContentText("Won't be able to recover this file!")
  160. .setConfirmText("Yes,delete it!")
  161. .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
  162. @Override
  163. public void onClick(final SweetAlertDialog pDialog) {
  164. /* sDialog
  165. .setTitleText("Deleted!")
  166. .setContentText("Your imaginary file has been deleted!")
  167. .setConfirmText("OK")
  168. .setConfirmClickListener(null)
  169. .changeAlertType(SweetAlertDialog.SUCCESS_TYPE);*/
  170. pDialog.changeAlertType(SweetAlertDialog.PROGRESS_TYPE);
  171. pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.alertDialog_Progress_Color));
  172. pDialog.getProgressHelper().setBarWidth(5);
  173. pDialog.getProgressHelper().setCircleRadius(100);
  174. pDialog.getProgressHelper().setRimColor(getResources().getColor(R.color.alertDialog_Progress_hintColor));
  175. pDialog.getProgressHelper().setRimWidth(5);
  176. pDialog.setTitleText("Please later...");
  177. pDialog.setContentText("");
  178. pDialog.setCancelable(false);
  179. mHandler.postDelayed(new Runnable() {
  180. @Override
  181. public void run() {
  182. pDialog.setTitleText("Deleted!")
  183. .setContentText("Your imaginary file has been deleted!")
  184. .setConfirmText("OK")
  185. .setConfirmClickListener(null)
  186. .changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
  187. pDialog.show();
  188. }
  189. }, 3000);
  190. }
  191. })
  192. .show();
  193. }
  194.  
  195. public void dismiss(final SweetAlertDialog pDialog){
  196. mHandler.postDelayed(new Runnable() {
  197. @Override
  198. public void run() {
  199. pDialog.dismiss();
  200. }
  201. }, 5000);
  202. }
  203.  
  204. }

SweetAlertDialog

  1. import android.app.Dialog;
  2. import android.content.Context;
  3. import android.graphics.drawable.Drawable;
  4. import android.os.Bundle;
  5. import android.os.Build.VERSION;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.view.WindowManager.LayoutParams;
  9. import android.view.animation.AlphaAnimation;
  10. import android.view.animation.Animation;
  11. import android.view.animation.AnimationSet;
  12. import android.view.animation.Transformation;
  13. import android.view.animation.Animation.AnimationListener;
  14. import android.widget.Button;
  15. import android.widget.FrameLayout;
  16. import android.widget.ImageView;
  17. import android.widget.TextView;
  18. import cn.pedant.SweetAlert.OptAnimationLoader;
  19. import cn.pedant.SweetAlert.ProgressHelper;
  20. import cn.pedant.SweetAlert.SuccessTickView;
  21. import cn.pedant.SweetAlert.R.anim;
  22. import cn.pedant.SweetAlert.R.drawable;
  23. import cn.pedant.SweetAlert.R.id;
  24. import cn.pedant.SweetAlert.R.layout;
  25. import cn.pedant.SweetAlert.R.style;
  26. import com.pnikosis.materialishprogress.ProgressWheel;
  27. import java.util.List;
  28.  
  29. public class SweetAlertDialog extends Dialog implements OnClickListener {
  30. private View mDialogView;
  31. private AnimationSet mModalInAnim;
  32. private AnimationSet mModalOutAnim;
  33. private Animation mOverlayOutAnim;
  34. private Animation mErrorInAnim;
  35. private AnimationSet mErrorXInAnim;
  36. private AnimationSet mSuccessLayoutAnimSet;
  37. private Animation mSuccessBowAnim;
  38. private TextView mTitleTextView;
  39. private TextView mContentTextView;
  40. private String mTitleText;
  41. private String mContentText;
  42. private boolean mShowCancel;
  43. private boolean mShowContent;
  44. private String mCancelText;
  45. private String mConfirmText;
  46. private int mAlertType;
  47. private FrameLayout mErrorFrame;
  48. private FrameLayout mSuccessFrame;
  49. private FrameLayout mProgressFrame;
  50. private SuccessTickView mSuccessTick;
  51. private ImageView mErrorX;
  52. private View mSuccessLeftMask;
  53. private View mSuccessRightMask;
  54. private Drawable mCustomImgDrawable;
  55. private ImageView mCustomImage;
  56. private Button mConfirmButton;
  57. private Button mCancelButton;
  58. private ProgressHelper mProgressHelper;
  59. private FrameLayout mWarningFrame;
  60. private SweetAlertDialog.OnSweetClickListener mCancelClickListener;
  61. private SweetAlertDialog.OnSweetClickListener mConfirmClickListener;
  62. private boolean mCloseFromCancel;
  63. public static final int NORMAL_TYPE = 0;
  64. public static final int ERROR_TYPE = 1;
  65. public static final int SUCCESS_TYPE = 2;
  66. public static final int WARNING_TYPE = 3;
  67. public static final int CUSTOM_IMAGE_TYPE = 4;
  68. public static final int PROGRESS_TYPE = 5;
  69.  
  70. public SweetAlertDialog(Context context) {
  71. this(context, 0);
  72. }
  73.  
  74. public SweetAlertDialog(Context context, int alertType) {
  75. super(context, style.alert_dialog);
  76. this.setCancelable(true);
  77. this.setCanceledOnTouchOutside(false);
  78. this.mProgressHelper = new ProgressHelper(context);
  79. this.mAlertType = alertType;
  80. this.mErrorInAnim = OptAnimationLoader.loadAnimation(this.getContext(), anim.error_frame_in);
  81. this.mErrorXInAnim = (AnimationSet)OptAnimationLoader.loadAnimation(this.getContext(), anim.error_x_in);
  82. if(VERSION.SDK_INT <= 10) {
  83. List childAnims = this.mErrorXInAnim.getAnimations();
  84.  
  85. int idx;
  86. for(idx = 0; idx < childAnims.size() && !(childAnims.get(idx) instanceof AlphaAnimation); ++idx) {
  87. ;
  88. }
  89.  
  90. if(idx < childAnims.size()) {
  91. childAnims.remove(idx);
  92. }
  93. }
  94.  
  95. this.mSuccessBowAnim = OptAnimationLoader.loadAnimation(this.getContext(), anim.success_bow_roate);
  96. this.mSuccessLayoutAnimSet = (AnimationSet)OptAnimationLoader.loadAnimation(this.getContext(), anim.success_mask_layout);
  97. this.mModalInAnim = (AnimationSet)OptAnimationLoader.loadAnimation(this.getContext(), anim.modal_in);
  98. this.mModalOutAnim = (AnimationSet)OptAnimationLoader.loadAnimation(this.getContext(), anim.modal_out);
  99. this.mModalOutAnim.setAnimationListener(new AnimationListener() {
  100. public void onAnimationStart(Animation animation) {
  101. }
  102.  
  103. public void onAnimationEnd(Animation animation) {
  104. SweetAlertDialog.this.mDialogView.setVisibility(8);
  105. SweetAlertDialog.this.mDialogView.post(new Runnable() {
  106. public void run() {
  107. if(SweetAlertDialog.this.mCloseFromCancel) {
  108. SweetAlertDialog.super.cancel();
  109. } else {
  110. SweetAlertDialog.super.dismiss();
  111. }
  112.  
  113. }
  114. });
  115. }
  116.  
  117. public void onAnimationRepeat(Animation animation) {
  118. }
  119. });
  120. this.mOverlayOutAnim = new Animation() {
  121. protected void applyTransformation(float interpolatedTime, Transformation t) {
  122. LayoutParams wlp = SweetAlertDialog.this.getWindow().getAttributes();
  123. wlp.alpha = 1.0F - interpolatedTime;
  124. SweetAlertDialog.this.getWindow().setAttributes(wlp);
  125. }
  126. };
  127. this.mOverlayOutAnim.setDuration(120L);
  128. }
  129.  
  130. protected void onCreate(Bundle savedInstanceState) {
  131. super.onCreate(savedInstanceState);
  132. this.setContentView(layout.alert_dialog);
  133. this.mDialogView = this.getWindow().getDecorView().findViewById(16908290);
  134. this.mTitleTextView = (TextView)this.findViewById(id.title_text);
  135. this.mContentTextView = (TextView)this.findViewById(id.content_text);
  136. this.mErrorFrame = (FrameLayout)this.findViewById(id.error_frame);
  137. this.mErrorX = (ImageView)this.mErrorFrame.findViewById(id.error_x);
  138. this.mSuccessFrame = (FrameLayout)this.findViewById(id.success_frame);
  139. this.mProgressFrame = (FrameLayout)this.findViewById(id.progress_dialog);
  140. this.mSuccessTick = (SuccessTickView)this.mSuccessFrame.findViewById(id.success_tick);
  141. this.mSuccessLeftMask = this.mSuccessFrame.findViewById(id.mask_left);
  142. this.mSuccessRightMask = this.mSuccessFrame.findViewById(id.mask_right);
  143. this.mCustomImage = (ImageView)this.findViewById(id.custom_image);
  144. this.mWarningFrame = (FrameLayout)this.findViewById(id.warning_frame);
  145. this.mConfirmButton = (Button)this.findViewById(id.confirm_button);
  146. this.mCancelButton = (Button)this.findViewById(id.cancel_button);
  147. this.mProgressHelper.setProgressWheel((ProgressWheel)this.findViewById(id.progressWheel));
  148. this.mConfirmButton.setOnClickListener(this);
  149. this.mCancelButton.setOnClickListener(this);
  150. this.setTitleText(this.mTitleText);
  151. this.setContentText(this.mContentText);
  152. this.setCancelText(this.mCancelText);
  153. this.setConfirmText(this.mConfirmText);
  154. this.changeAlertType(this.mAlertType, true);
  155. }
  156.  
  157. private void restore() {
  158. this.mCustomImage.setVisibility(8);
  159. this.mErrorFrame.setVisibility(8);
  160. this.mSuccessFrame.setVisibility(8);
  161. this.mWarningFrame.setVisibility(8);
  162. this.mProgressFrame.setVisibility(8);
  163. this.mConfirmButton.setVisibility(0);
  164. this.mConfirmButton.setBackgroundResource(drawable.blue_button_background);
  165. this.mErrorFrame.clearAnimation();
  166. this.mErrorX.clearAnimation();
  167. this.mSuccessTick.clearAnimation();
  168. this.mSuccessLeftMask.clearAnimation();
  169. this.mSuccessRightMask.clearAnimation();
  170. }
  171.  
  172. private void playAnimation() {
  173. if(this.mAlertType == 1) {
  174. this.mErrorFrame.startAnimation(this.mErrorInAnim);
  175. this.mErrorX.startAnimation(this.mErrorXInAnim);
  176. } else if(this.mAlertType == 2) {
  177. this.mSuccessTick.startTickAnim();
  178. this.mSuccessRightMask.startAnimation(this.mSuccessBowAnim);
  179. }
  180.  
  181. }
  182.  
  183. private void changeAlertType(int alertType, boolean fromCreate) {
  184. this.mAlertType = alertType;
  185. if(this.mDialogView != null) {
  186. if(!fromCreate) {
  187. this.restore();
  188. }
  189.  
  190. switch(this.mAlertType) {
  191. case 1:
  192. this.mErrorFrame.setVisibility(0);
  193. break;
  194. case 2:
  195. this.mSuccessFrame.setVisibility(0);
  196. this.mSuccessLeftMask.startAnimation((Animation)this.mSuccessLayoutAnimSet.getAnimations().get(0));
  197. this.mSuccessRightMask.startAnimation((Animation)this.mSuccessLayoutAnimSet.getAnimations().get(1));
  198. break;
  199. case 3:
  200. this.mConfirmButton.setBackgroundResource(drawable.red_button_background);
  201. this.mWarningFrame.setVisibility(0);
  202. break;
  203. case 4:
  204. this.setCustomImage(this.mCustomImgDrawable);
  205. break;
  206. case 5:
  207. this.mProgressFrame.setVisibility(0);
  208. this.mConfirmButton.setVisibility(8);
  209. }
  210.  
  211. if(!fromCreate) {
  212. this.playAnimation();
  213. }
  214. }
  215.  
  216. }
  217.  
  218. public int getAlerType() {
  219. return this.mAlertType;
  220. }
  221.  
  222. public void changeAlertType(int alertType) {
  223. this.changeAlertType(alertType, false);
  224. }
  225.  
  226. public String getTitleText() {
  227. return this.mTitleText;
  228. }
  229.  
  230. public SweetAlertDialog setTitleText(String text) {
  231. this.mTitleText = text;
  232. if(this.mTitleTextView != null && this.mTitleText != null) {
  233. this.mTitleTextView.setText(this.mTitleText);
  234. }
  235.  
  236. return this;
  237. }
  238.  
  239. public SweetAlertDialog setCustomImage(Drawable drawable) {
  240. this.mCustomImgDrawable = drawable;
  241. if(this.mCustomImage != null && this.mCustomImgDrawable != null) {
  242. this.mCustomImage.setVisibility(0);
  243. this.mCustomImage.setImageDrawable(this.mCustomImgDrawable);
  244. }
  245.  
  246. return this;
  247. }
  248.  
  249. public SweetAlertDialog setCustomImage(int resourceId) {
  250. return this.setCustomImage(this.getContext().getResources().getDrawable(resourceId));
  251. }
  252.  
  253. public String getContentText() {
  254. return this.mContentText;
  255. }
  256.  
  257. public SweetAlertDialog setContentText(String text) {
  258. this.mContentText = text;
  259. if(this.mContentTextView != null && this.mContentText != null) {
  260. this.showContentText(true);
  261. this.mContentTextView.setText(this.mContentText);
  262. }
  263.  
  264. return this;
  265. }
  266.  
  267. public boolean isShowCancelButton() {
  268. return this.mShowCancel;
  269. }
  270.  
  271. public SweetAlertDialog showCancelButton(boolean isShow) {
  272. this.mShowCancel = isShow;
  273. if(this.mCancelButton != null) {
  274. this.mCancelButton.setVisibility(this.mShowCancel?
  275.  
  276. 0:8);
  277. }
  278.  
  279. return this;
  280. }
  281.  
  282. public boolean isShowContentText() {
  283. return this.mShowContent;
  284. }
  285.  
  286. public SweetAlertDialog showContentText(boolean isShow) {
  287. this.mShowContent = isShow;
  288. if(this.mContentTextView != null) {
  289. this.mContentTextView.setVisibility(this.mShowContent?0:8);
  290. }
  291.  
  292. return this;
  293. }
  294.  
  295. public String getCancelText() {
  296. return this.mCancelText;
  297. }
  298.  
  299. public SweetAlertDialog setCancelText(String text) {
  300. this.mCancelText = text;
  301. if(this.mCancelButton != null && this.mCancelText != null) {
  302. this.showCancelButton(true);
  303. this.mCancelButton.setText(this.mCancelText);
  304. }
  305.  
  306. return this;
  307. }
  308.  
  309. public String getConfirmText() {
  310. return this.mConfirmText;
  311. }
  312.  
  313. public SweetAlertDialog setConfirmText(String text) {
  314. this.mConfirmText = text;
  315. if(this.mConfirmButton != null && this.mConfirmText != null) {
  316. this.mConfirmButton.setText(this.mConfirmText);
  317. }
  318.  
  319. return this;
  320. }
  321.  
  322. public SweetAlertDialog setCancelClickListener(SweetAlertDialog.OnSweetClickListener listener) {
  323. this.mCancelClickListener = listener;
  324. return this;
  325. }
  326.  
  327. public SweetAlertDialog setConfirmClickListener(SweetAlertDialog.OnSweetClickListener listener) {
  328. this.mConfirmClickListener = listener;
  329. return this;
  330. }
  331.  
  332. protected void onStart() {
  333. this.mDialogView.startAnimation(this.mModalInAnim);
  334. this.playAnimation();
  335. }
  336.  
  337. public void cancel() {
  338. this.dismissWithAnimation(true);
  339. }
  340.  
  341. public void dismissWithAnimation() {
  342. this.dismissWithAnimation(false);
  343. }
  344.  
  345. private void dismissWithAnimation(boolean fromCancel) {
  346. this.mCloseFromCancel = fromCancel;
  347. this.mConfirmButton.startAnimation(this.mOverlayOutAnim);
  348. this.mDialogView.startAnimation(this.mModalOutAnim);
  349. }
  350.  
  351. public void onClick(View v) {
  352. if(v.getId() == id.cancel_button) {
  353. if(this.mCancelClickListener != null) {
  354. this.mCancelClickListener.onClick(this);
  355. } else {
  356. this.dismissWithAnimation();
  357. }
  358. } else if(v.getId() == id.confirm_button) {
  359. if(this.mConfirmClickListener != null) {
  360. this.mConfirmClickListener.onClick(this);
  361. } else {
  362. this.dismissWithAnimation();
  363. }
  364. }
  365.  
  366. }
  367.  
  368. public ProgressHelper getProgressHelper() {
  369. return this.mProgressHelper;
  370. }
  371.  
  372. public interface OnSweetClickListener {
  373. void onClick(SweetAlertDialog var1);
  374. }
  375. }

项目引用依赖:

进度条项目github:https://github.com/pnikosis/materialish-progress

demo项目地址:http://download.csdn.net/detail/anddroid_lanyan/8859017

新增:Eclipse Demo源代码地址 http://download.csdn.net/detail/anddroid_lanyan/8861939

Android studio SweetAlert for Android的更多相关文章

  1. android studio :com.android.support:appcompat-v7:21.+ 报错

    android studio :com.android.support:appcompat-v7:21.+ 报错: 在project——>app——>build.gradle修改: app ...

  2. 【Android Studio】为Android Studio设置HTTP代理

    [Android Studio]为Android Studio设置HTTP代理   大陆的墙很厚很高,初次安装Android Studio下载SDK等必定失败,设置代理方法如下: 1. 到androi ...

  3. 在Android Studio中打开Android Device Monitor时报错的解决方法

    在Android Studio中打开Android Device Monitor时报以下错误时(Android-SDK\tools\lib\monitor-x86_64\configuration\1 ...

  4. 【转】在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)

    在Android Studio中下载Android SDK的两种方式(Android Studio3.0.windows) 方式一.设置HTTP Proxy1. 打开Settings2. 点击HTTP ...

  5. Android Studio快捷键【Android学习入门】

    Studio快捷键[Android学习入门]" title="Android Studio快捷键[Android学习入门]"> 提示 Ctrl+P方法参数提示 Ct ...

  6. Android studio怎么创建Android虚拟机?

    进行Android studio中进行开发app应用的情况,如果在进行调式app的应用的情况下,没有真机手机机器是没有办法调式的,那么只能通过Android studio中sdk提供虚拟机进行调式ap ...

  7. Android Studio(八):Android Studio设置教程

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  8. Android Studio(六):Android Studio添加注释模板

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  9. Android Studio(四):Android Studio集成Genymotion

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

随机推荐

  1. Zookeeper 3、Zookeeper工作原理(详细)

    1.Zookeeper的角色 » 领导者(leader),负责进行投票的发起和决议,更新系统状态 » 学习者(learner),包括跟随者(follower)和观察者(observer),follow ...

  2. Ajax下载文件(页面无刷新)

    说明:Ajax是无法实现文件传输的,本文只是模拟了Ajax不刷新页面就可以请求并返回数据的效果.实质上还是通过提交form表单来返回文件流的输出. 分步实现逻辑: ajax请求服务器,访问数据库,根据 ...

  3. NET基础课--组件2

    强命名组件:使用sn.exe生成公钥私钥对,公钥可以用工具查看.snk文件需严格保护. sn -k  d:\iron.snk       生成公钥私钥对 sn -p  d:\iron.snk  d:\ ...

  4. ExtJs4.0入门错误

    当在eclipse中的web工程中增加了extjs4,出现An internal error occurred during: "Building workspace". Java ...

  5. C#获取mac

    验证计算机MAC地址进行软件授权是一种通用的方法,C#可以轻松获取计算机的MAC地址,本文采用实际的源代码讲述了两种获取网卡的方式,第一种 方法使用ManagementClass类,只能获取本机的计算 ...

  6. HDU 2072(单词数)题解

    以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] “就是统计一篇文章里不同单词的总数”(已经是一句话了..) [题目分析] 明显需要去重,上set,因为按行分析,又没有EOLN用 ...

  7. linux的find指令详解。

    引用:http://os.51cto.com/art/200908/141411.htm http://www.oschina.net/translate/15-practical-linux-fin ...

  8. My97DatePicker使用的问题

    我在iframe中使用My97DatePicker时,发现第一次点击左边的菜单时,在右边的页面可以弹出日期框: 当我第二次点击菜单时,右边的日期文本框却弹出了页面的内容,而不是日期选择框: 首先怀疑是 ...

  9. 自己写的轻量级PHP框架trig与laravel5.1,yii2性能对比

    看了下当前最热门的php开发框架,想对比一下自己写的框架与这些框架的性能对比.先看下当前流行框架的投票情况. 看结果对比,每个测试脚本做了一个数据库的联表查询并进行print_r输出,查询的sql语句 ...

  10. Android 有用的快捷键

    The powerful Android Studio 08 Jun 2016 Android Studio is the official tool for Android development ...