美丽的对话框 sweet-alert-dialog
项目地址: https://github.com/pedant/sweet-alert-dialog
android原生的dialog太生硬了,之前看到了这个效果很不错可是没实用过,今天给别人推荐使用,他遇到了问题,导入后错误许多,也没有库project。于是自己认真看了一下,这是个AndroidStudio的project。而且里面还依赖于materialish-progressproject,也是个AS的project。于是打算弄一个eclipse的版本号而且将这两个project融合在一起作为一个库projectXAlertDialogLibrary。
使用时将其作为库导入项目中就可以。
效果例如以下
使用起来很easy,測试代码例如以下:
MainActivity.java
public class MainActivity extends Activity implements View.OnClickListener {
private int i = -1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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)
.setTitleText("Are you sure?")
.setContentText("Won't be able to recover this file!")
.setCancelText("No,cancel plx!")
.setConfirmText("Yes,delete it!")
.showCancelButton(true)
.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sDialog) {
// reuse previous dialog instance, keep widget user state, reset them if you need
sDialog.setTitleText("Cancelled!")
.setContentText("Your imaginary file is safe :)")
.setConfirmText("OK")
.showCancelButton(false)
.setCancelClickListener(null)
.setConfirmClickListener(null)
.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();*/
}
})
.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;
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));
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;
}
}
}
activity_main.xml
<?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>