| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package com.datarecovery.master.dialog;
- import android.animation.Animator;
- import android.animation.AnimatorListenerAdapter;
- import android.animation.ValueAnimator;
- import android.content.Context;
- import android.view.animation.AccelerateDecelerateInterpolator;
- import androidx.annotation.NonNull;
- import androidx.lifecycle.LiveData;
- import androidx.lifecycle.MutableLiveData;
- import com.atmob.app.lib.base.BaseDialog;
- import com.datarecovery.master.R;
- import com.datarecovery.master.databinding.DialogScanProgressBinding;
- @BaseDialog.FullScreen(height = false)
- public class ScanProgressDialog extends BaseDialog<DialogScanProgressBinding> {
- private OnCancelListener onCancelListener;
- public ScanProgressDialog(@NonNull Context context, LiveData<Integer> totalDetectedCount) {
- super(context, R.style.Theme_Common_Dialog);
- setCancelable(false);
- binding.setCancelClick(v -> {
- if (onCancelListener != null)
- onCancelListener.onCancel();
- dismiss();
- });
- binding.setDetectedCount(totalDetectedCount);
- }
- public void setOnCancelListener(OnCancelListener onCancelListener) {
- this.onCancelListener = onCancelListener;
- }
- @Override
- public void show() {
- super.show();
- startProgress();
- }
- private void startProgress() {
- ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 99);
- valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
- valueAnimator.addUpdateListener(animation -> {
- float value = (float) valueAnimator.getAnimatedValue();
- binding.setPercentageValue(value);
- });
- valueAnimator.setDuration(1000 * 60 * 3);
- valueAnimator.start();
- }
- public void detectedFinish() {
- ValueAnimator valueAnimator = ValueAnimator.ofFloat(binding.getPercentageValue(), 100);
- valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
- valueAnimator.addUpdateListener(animation -> {
- float value = (float) valueAnimator.getAnimatedValue();
- binding.setPercentageValue(value);
- });
- valueAnimator.setDuration(2000);
- valueAnimator.start();
- valueAnimator.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- dismiss();
- }
- });
- }
- public interface OnCancelListener {
- void onCancel();
- }
- }
|