Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog)
Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog)是一个套制作精美、动画效果出色生动的Android对话、消息提示框,如图所示
SweetAlertDialog(sweet-alert-dialog)在github上的项目主页是:https://github.com/pedant/sweet-alert-dialog
需要注意的是,SweetAlertDialog(sweet-alert-dialog)作为库,其自身又依赖另外一个github上的开源库materialish-progress(其在github上的项目主页是:https://github.com/pnikosis/materialish-progress )。如果使用SweetAlertDialog(sweet-alert-dialog),则需要再把materialish-progress也导入到Eclipse中作为库被SweetAlertDialog(sweet-alert-dialog)引用。
(注意:导入SweetAlertDialog时,下属的layout大概第116行会报错,需改成 wheel:matProg_progressIndeterminate="true" ,
其中需要修改的matProg_progressIndeterminate,在materialish-progress/res/values/attrs的第5行)
贴一部分SweetAlertDialog(sweet-alert-dialog)在demo中的代码:
package cn.pedant.SweetAlert.sample; import android.app.Activity; import android.os.Bundle; import android.os.CountDownTimer; import android.view.View; import cn.pedant.SweetAlert.SweetAlertDialog; public class SampleActivity extends Activity implements View.OnClickListener { private int i = -1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sample_activity); findViewById(R.id.basic_test).setOnClickListener(this); findViewById(R.id.under_text_test).setOnClickListener(this); findViewById(R.id.error_text_test).setOnClickListener(this); findViewById(R.id.success_text_test).setOnClickListener(this); findViewById(R.id.warning_confirm_test).setOnClickListener(this); findViewById(R.id.warning_cancel_test).setOnClickListener(this); findViewById(R.id.custom_img_test).setOnClickListener(this); findViewById(R.id.progress_dialog).setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.basic_test: // default title "Here's a message!" SweetAlertDialog sd = new SweetAlertDialog(this); sd.setCancelable(true); sd.setCanceledOnTouchOutside(true); sd.show(); break; case R.id.under_text_test: new SweetAlertDialog(this).setContentText("It's pretty, isn't it?").show(); break; case R.id.error_text_test: new SweetAlertDialog(this, SweetAlertDialog.ERROR_TYPE) .setTitleText("Oops...") .setContentText("Something went wrong!").show(); break; case R.id.success_text_test: new SweetAlertDialog(this, SweetAlertDialog.SUCCESS_TYPE) .setTitleText("Good job!") .setContentText("You clicked the button!").show(); break; case R.id.warning_confirm_test: new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE) .setTitleText("Are you sure?") .setContentText("Won't be able to recover this file!").setConfirmText("Yes,delete it!") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sDialog) { // reuse previous dialog instance sDialog.setTitleText("Deleted!") .setContentText("Your imaginary file has been deleted!") .setConfirmText("OK").setConfirmClickListener(null) .changeAlertType(SweetAlertDialog.SUCCESS_TYPE); } }).show(); break; case R.id.warning_cancel_test: new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE) <span style="white-space:pre"> </span>.setTitleText("Are you sure?") <span style="white-space:pre"> </span>.setContentText("Won't be able to recover this file!").setCancelText("No,cancel plx!") <span style="white-space:pre"> </span>.setConfirmText("Yes,delete it!").showCancelButton(true) <span style="white-space:pre"> </span>.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sDialog) { <span style="white-space:pre"> </span> // reuse previous dialog instance, keep widget user <span style="white-space:pre"> </span> // state, reset them if you need <span style="white-space:pre"> </span>sDialog.setTitleText("Cancelled!").setContentText("Your imaginary file is safe :)") <span style="white-space:pre"> </span>.setConfirmText("OK").showCancelButton(false).setCancelClickListener(null) <span style="white-space:pre"> </span>.setConfirmClickListener(null) <span style="white-space:pre"> </span>.changeAlertType(SweetAlertDialog.ERROR_TYPE); // or you can new a SweetAlertDialog to show /* * sDialog.dismiss(); new * SweetAlertDialog(SampleActivity.this, * SweetAlertDialog.ERROR_TYPE) * .setTitleText("Cancelled!") .setContentText( * "Your imaginary file is safe :)") * .setConfirmText("OK") .show(); */ <span style="white-space:pre"> </span>} }).setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sDialog) { sDialog.setTitleText("Deleted!") .setContentText("Your imaginary file has been deleted!") .setConfirmText("OK") .showCancelButton(false) .setCancelClickListener(null) .setConfirmClickListener(null) .changeAlertType(SweetAlertDialog.SUCCESS_TYPE); } }).show(); break; case R.id.custom_img_test: new SweetAlertDialog(this, SweetAlertDialog.CUSTOM_IMAGE_TYPE) .setTitleText("Sweet!") .setContentText("Here's a custom image.") .setCustomImage(R.drawable.custom_img).show(); break; case R.id.progress_dialog: final SweetAlertDialog pDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE) .setTitleText("Loading"); pDialog.show(); pDialog.setCancelable(false); new CountDownTimer(800 * 7, 800) { public void onTick(long millisUntilFinished) { // you can change the progress bar color by ProgressHelper // every 800 millis i++; switch (i) { case 0: pDialog.getProgressHelper() .setBarColor(getResources() .getColor(R.color.blue_btn_bg_color)); break; case 1: pDialog.getProgressHelper() .setBarColor(getResources() .getColor(R.color.material_deep_teal_50)); break; case 2: pDialog.getProgressHelper() .setBarColor(getResources() .getColor(R.color.success_stroke_color)); break; case 3: pDialog.getProgressHelper() .setBarColor(getResources() .getColor(R.color.material_deep_teal_20)); break; <span style="white-space:pre"> </span>case 4: pDialog.getProgressHelper() .setBarColor(getResources() .getColor(R.color.material_blue_grey_80)); break; case 5: pDialog.getProgressHelper() .setBarColor(getResources() .getColor(R.color.warning_stroke_color)); <span style="white-space:pre"> </span>break; case 6: pDialog.getProgressHelper() .setBarColor(getResources() .getColor(R.color.success_stroke_color)); break; } } public void onFinish() { i = -1; pDialog.setTitleText("Success!").setConfirmText("OK") .changeAlertType(SweetAlertDialog.SUCCESS_TYPE); } }.start(); break; } } }
<?xml version="1.0" encoding="utf-8"?> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFF" xmlns:android="http://schemas.android.com/apk/res/android"> <RelativeLayout android:layout_width="match_parent" android:paddingBottom="10dp" android:layout_height="wrap_content"> <ImageView android:id="@+id/logo_img" android:layout_width="180dp" android:layout_height="wrap_content" android:src="@drawable/logo_big" android:layout_marginTop="10dp" android:layout_marginBottom="15dp" android:layout_centerHorizontal="true" android:contentDescription="@string/app_name"/> <TextView android:id="@+id/txt_0" android:layout_alignLeft="@id/logo_img" android:layout_below="@id/logo_img" android:layout_marginLeft="15dp" android:text="show material progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp" android:textColor="#797979"/> <Button android:layout_centerHorizontal="true" android:layout_below="@id/txt_0" android:id="@+id/progress_dialog" style="@style/dialog_blue_button" android:layout_margin="10dp" android:text="Try me!"/> <TextView android:id="@+id/txt_1" android:layout_alignLeft="@id/logo_img" android:layout_below="@id/progress_dialog" android:layout_marginLeft="15dp" android:text="A basic message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp" android:textColor="#797979"/> <Button android:layout_centerHorizontal="true" android:layout_below="@id/txt_1" android:id="@+id/basic_test" style="@style/dialog_blue_button" android:layout_margin="10dp" android:text="Try me!"/> <TextView android:id="@+id/txt_2" android:layout_alignLeft="@id/logo_img" android:layout_below="@id/basic_test" android:layout_marginLeft="15dp" android:text="A title with a text under" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp" android:layout_marginTop="15dp" android:textColor="#797979"/> <Button android:layout_centerHorizontal="true" android:layout_below="@id/txt_2" android:id="@+id/under_text_test" style="@style/dialog_blue_button" android:layout_margin="10dp" android:text="Try me!"/> <TextView android:id="@+id/txt_3" android:layout_alignLeft="@id/logo_img" android:layout_below="@id/under_text_test" android:layout_marginLeft="15dp" android:text="show error message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp" android:layout_marginTop="15dp" android:textColor="#797979"/> <Button android:layout_centerHorizontal="true" android:layout_below="@id/txt_3" android:id="@+id/error_text_test" style="@style/dialog_blue_button" android:layout_margin="10dp" android:text="Try me!"/> <TextView android:id="@+id/txt_4" android:layout_alignLeft="@id/logo_img" android:layout_below="@id/error_text_test" android:layout_marginLeft="15dp" android:text="A success message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp" android:layout_marginTop="15dp" android:textColor="#797979"/> <Button android:layout_centerHorizontal="true" android:layout_below="@id/txt_4" android:id="@+id/success_text_test" style="@style/dialog_blue_button" android:layout_margin="10dp" android:text="Try me!"/> <TextView android:id="@+id/txt_5" android:layout_alignLeft="@id/logo_img" android:layout_below="@id/success_text_test" android:layout_marginLeft="15dp" android:text="A warning message, with a listener bind to the Confirm-button..." android:layout_width="200dp" android:layout_height="wrap_content" android:textSize="14sp" android:layout_marginTop="15dp" android:textColor="#797979"/> <Button android:layout_centerHorizontal="true" android:layout_below="@id/txt_5" android:id="@+id/warning_confirm_test" style="@style/dialog_blue_button" android:layout_margin="10dp" android:text="Try me!"/> <TextView android:id="@+id/txt_6" android:layout_alignLeft="@id/logo_img" android:layout_below="@id/warning_confirm_test" android:layout_marginLeft="15dp" android:text="A warning message, with listeners bind to Cancel and Confirm button..." android:layout_width="200dp" android:layout_height="wrap_content" android:textSize="14sp" android:layout_marginTop="15dp" android:textColor="#797979"/> <Button android:layout_centerHorizontal="true" android:layout_below="@id/txt_6" android:id="@+id/warning_cancel_test" style="@style/dialog_blue_button" android:layout_margin="10dp" android:text="Try me!"/> <TextView android:id="@+id/txt_7" android:layout_alignLeft="@id/logo_img" android:layout_below="@id/warning_cancel_test" android:layout_marginLeft="15dp" android:text="A message with a custom icon" android:layout_width="200dp" android:layout_height="wrap_content" android:textSize="14sp" android:layout_marginTop="15dp" android:textColor="#797979"/> <Button android:layout_centerHorizontal="true" android:layout_below="@id/txt_7" android:id="@+id/custom_img_test" style="@style/dialog_blue_button" android:layout_margin="10dp" android:text="Try me!"/> </RelativeLayout> </ScrollView>