Создание кнопки в Xamarin Android, которая требует 3 клика - PullRequest
0 голосов
/ 13 марта 2020

Создание кнопки в Xamarin Android, для которой требуется 3 щелчка.

Пока что есть следующее, но не работает

Я создал это в основном действии с кнопкой на форма

Однако при нажатии на кнопку (которая работала при нажатии один раз) теперь не работает

public async void DepositAsync(object sender, EventArgs eventArgs)
     int counter = 0;

    {
        if (Security.IsDeposited) return;
        bool result = await Security.Deposit(EnteredAmount.Text);

        {



            if (counter == 1) 

            {

            Toast.MakeText(this, "Please click button twice", ToastLength.Long).Show();

            }

            else if (counter == 2)

            {
                Toast.MakeText(this, "Triple click to confirm deposit", ToastLength.Long).Show();
            }


           else if (counter == 3) 

           {
                if (result)
                {
                    Toast.MakeText(this, "Deposit Successfully", ToastLength.Long).Show();
                    StartActivity(new Intent(this, typeof(MainActivity)));
                    ValidationText.Text = "Success!";
                    ValidationText.SetTextColor(new Color(20, 230, 20));
                }
                else
                {
                    Animation shake = AnimationUtils.LoadAnimation(this, Resource.Animation.shake);
                    ValidationText.Text = "Cannot Deposit...please try again";
                    ValidationText.SetTextColor(new Color(230, 20, 20));
                    ValidationText.StartAnimation(shake);
                    ConfirmDeposit.StartAnimation(shake);
                    EnteredAmount.StartAnimation(shake);
                }

            }

        }
    }

1 Ответ

0 голосов
/ 16 марта 2020

Вы можете использовать параметр для записи количества кликов clic, а затем основываться на числе, чтобы что-то сделать, и я думаю, что вам нужно определить интервал, чтобы определить, является ли клик действительным, вы можете проверить ниже:

  private int clickcount = 0; // record the click count
  private long clickTime;  //the time you click
  private long preClickTime; //the last click timev
  private long interval  = 2000; //the valid interval

  Button button = FindViewById<Button>(Resource.Id.button);

  button.Click += delegate
       {
           clickcount++;
           clickTime = Java.Lang.JavaSystem.CurrentTimeMillis();

           if (clickcount == 1)
           {
               preClickTime = clickTime;
               Toast.MakeText(this, "Please click button twice", ToastLength.Long).Show();
           }
           else
           {

               if ((clickTime - preClickTime) < interval)
               {
                   preClickTime = clickTime;
                   switch (clickcount)
                   {
                       case 2:
                           Toast.MakeText(this, "Triple click to confirm deposit", ToastLength.Long).Show();
                           break;
                       case 3:
                           preClickTime = 0;
                           clickcount = 0;
                           Toast.MakeText(this, "Deposit Successfully", ToastLength.Long).Show();
                           break;
                   }

               }
               else
               {
                   clickcount = 1;
                   preClickTime = clickTime;
                   Toast.MakeText(this, "Please click button twice", ToastLength.Long).Show();
                   return;
               }
           }
         };

Вы могли бы что-то сделать в блоке case 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...