Как остановить взаимодействие с пользователем во время работы метода? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть несколько кнопок (клавиатура), вызывающих метод с некоторым кодом, который анимирует те же кнопки.Если пользователь нажимает кнопки слишком быстро, анимация портится.Поэтому мне нужно отключить взаимодействие с пользователем во время метода.Я попытался установить флажки окна в начале и в конце метода, а также даже отключить кнопки.Но до сих пор.Если пользователь нажимает кнопки слишком быстро, значит приложение не успевает установить флаги.

public void onClickKeyboard (View view) {


    getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);



    if (myAnswers[gameState].charAt(s.length())== ' ') {
          s = s + " ";
    }
        s = s + view.getTag().toString();

        if (s.equalsIgnoreCase(myAnswers[gameState].substring(0,s.length()))){

            ViewCompat.animate(view).alpha(0).setDuration(200).start();

            //  view.setVisibility(View.INVISIBLE);

                preguntaViewInput = myQuestions[gameState] + s.substring(0,1).toUpperCase()+s.substring(1).toLowerCase();

            preguntaView.setText(preguntaViewInput, TextView.BufferType.SPANNABLE);
            numberKeysPressed++;

        } else {

            s = s.substring(0, s.length() - 1); // sense aixo lapp crash quan sapreten 10 lletres incorrectes seguides
            b = (Button) view;

            view.setBackgroundResource(R.drawable.button_keyboard_wrong);
            if (answerFor.substring(numberKeysPressed, answerFor.length()).contains(((Button) view).getText().toString())){
                ViewCompat.animate(view).rotationBy(360).scaleY((float) 0.7).scaleX((float) 0.7).setDuration(200).withEndAction(new Runnable() {
                    @Override
                    public void run() {

                        ViewCompat.animate(b).rotationBy(360).scaleY((float) 1).scaleX((float) 1).setDuration(200).withEndAction(new Runnable() {
                            @Override
                            public void run() {

                                b.setBackgroundResource(R.drawable.buttonpurchase);

                            }
                        });

                    }
                });

            } else {

                ViewCompat.animate(view).rotationBy(360).scaleY((float) 0.7).scaleX((float) 0.7).setDuration(200).start();
            }
        }



    if (s.toString().equalsIgnoreCase(myAnswers[gameState])) {
        Spannable ss = (Spannable) preguntaView.getText();

        ss.setSpan(new ForegroundColorSpan(Color.GREEN), myQuestions[gameState].length(), s.length() + myQuestions[gameState].length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        buttonNext.setBackgroundColor(Color.argb(64, 0, 250, 0));
        String nextString = "correct";
        buttonNext.setText(nextString);
        buttonNext.setAlpha(0);
        buttonNext.setVisibility(View.VISIBLE);
        ViewCompat.animate(buttonNext).alpha(1).setDuration(300).start();
    }



    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

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