Alert dialog with disclosure effect for the above API 21 =>
public final void customAlertDialog(final Activity mActivity) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity); final View view = LayoutInflater.from(mActivity).inflate(R.layout.alert_dialog_simple_msg,null); alertDialogBuilder.setView(view); final AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); TextView tvOk= (TextView) view.findViewById(R.id.tvOk); final Animator[] animHide = {null}; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { alertDialog.show(); view.post(new Runnable() { @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public void run() { int cx = (int)view.getWidth() / 2; int cy = (int) view.getHeight() / 2; float finalRadius = (float) Math.hypot(cx, cy); Animator animVisible = ViewAnimationUtils.createCircularReveal(view, cx, cy, 0, finalRadius); animHide[0] = ViewAnimationUtils.createCircularReveal(view, cx, cy, finalRadius, 0); animVisible.start(); } }); } tvOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { if ( animHide[0]!=null) { animHide[0].addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); alertDialog.dismiss(); } }); animHide[0].start(); } else { alertDialog.dismiss(); } } else { alertDialog.dismiss(); } } }); alertDialog.setCancelable(false); }
source share