I am here of course ignoring the fact that there are more than a hundred apps similar available on the Market.
When developing the first version of this app I ran into an interesting point about UI responsiveness and how I could do a "sleep()" function.
The flow is:
- The problem is presented
- The user answers by clicking on of the available buttons
- Mark the problem green for a second before continuing if the answer was correct
- If the asnwer was incorrect mark the problem red until the correct answer is chosen
I ended up doing it as follows
private void verifyResult(final View view){ answerAttempts++; // The user has tried to answer the problem increment answer attempts disableAnswerButtons(); // Disable further user input when the text is green/red otherwise the user can click many times on the buttons int result = Integer.parseInt(view.getTag().toString()); if (correctResult == result) { problem.setTextColor(Color.GREEN); problem.setText(getProblemText(true)); // Show full problem + correct result points++; // Wait 1 second before resetting the text color and showing a new problem text new Handler().postDelayed(new Runnable() { public void run() { problem.setTextColor(Color.WHITE); generateProblem(); // Generate a new problem and update UI enableAnswerButtons(); } }, 1000); } else{ problem.setTextColor(Color.RED); enableAnswerButtons(); } score.setText(String.format("%s %d/%d", getString(R.string.score), points, answerAttempts)); }
No comments:
Post a Comment