package com.sbj.demo; // Created By Samit import java.util.ArrayList; import java.util.HashMap; import java.util.Random; import android.app.Activity; import android.graphics.Typeface; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.LinearLayout; import android.widget.TextView; public class Home extends Activity { private final String TAG = Home.class.getSimpleName(); TextView txtQuestion_FirstPart = null; TextView txtOperator = null; TextView txtQuestion_SecondPart = null; TextView txtAnswer = null; TextView txtOption1 = null; TextView txtOption2 = null; TextView txtOption3 = null; TextView txtOption4 = null; TextView txtQuestion_equal = null; TextView txtMessage = null; private int MinNumber = 0; private int MaxNumber = 50; private String[] Operator = { "ADD", "SUB", "MUL" }; private HashMap<Integer,Integer> Options = new HashMap<Integer,Integer>(); private ArrayList<Integer> OptionsPositions = new ArrayList<Integer>(); String Addition = "ADD"; String Substract = "SUB"; String Multiply = "MUL"; int CorrectAnsPosition = -1; Handler handler = new Handler(); LinearLayout linQuestion = null; Animation anim_slide_in_up = null; Animation anim_slide_out_up = null; Animation anim_bounce_scale = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.main); init(); SetQuestionAndOptions(); } private void init() { Typeface font1 = Typeface.createFromAsset(getAssets(), "ASMAN.TTF"); txtQuestion_FirstPart = (TextView) findViewById(R.id.txtQuestion_FirstPart); txtOperator = (TextView) findViewById(R.id.txtOperator); txtQuestion_SecondPart = (TextView) findViewById(R.id.txtQuestion_SecondPart); txtAnswer = (TextView) findViewById(R.id.txtAnswer); txtOption1 = (TextView) findViewById(R.id.txtOption1); txtOption2 = (TextView) findViewById(R.id.txtOption2); txtOption3 = (TextView) findViewById(R.id.txtOption3); txtOption4 = (TextView) findViewById(R.id.txtOption4); txtMessage = (TextView) findViewById(R.id.txtMessage); txtQuestion_equal = (TextView) findViewById(R.id.txtQuestion_equal); txtQuestion_equal.setText("="); txtQuestion_FirstPart.setTypeface(font1); // txtOperator.setTypeface(font1); txtQuestion_SecondPart.setTypeface(font1); txtAnswer.setTypeface(font1); txtOption1.setTypeface(font1); txtOption2.setTypeface(font1); txtOption3.setTypeface(font1); txtOption4.setTypeface(font1); txtMessage.setTypeface(font1); // txtQuestion_equal.setTypeface(font1); linQuestion = (LinearLayout)findViewById(R.id.linearLayout1); anim_slide_in_up = AnimationUtils.loadAnimation(this, R.anim.slide_in_up); anim_slide_out_up = AnimationUtils.loadAnimation(this, R.anim.slide_out_up); anim_bounce_scale = AnimationUtils.loadAnimation(this, R.anim.bounce_scale); txtOption1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub CheckAnswer(1); } }); txtOption2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub CheckAnswer(2); } }); txtOption3.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub CheckAnswer(3); } }); txtOption4.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub CheckAnswer(4); } }); } private void SetQuestionAndOptions() { txtMessage.setVisibility(View.INVISIBLE); txtAnswer.setVisibility(View.INVISIBLE); int Answer = 0; int Opt = GenerateRandom(MinNumber, Operator.length - 1); Log.e("Opt ", " : " + Opt); String operat = Operator[Opt]; if (operat.equals(Addition)) { MaxNumber = 100; int FirstPart = GenerateRandom(5, MaxNumber); txtQuestion_FirstPart.setText(String.valueOf(FirstPart)); int SecondPart = GenerateRandom(MinNumber, FirstPart); txtQuestion_SecondPart.setText(String.valueOf(SecondPart)); txtOperator.setText("+"); int First = Integer.parseInt(txtQuestion_FirstPart.getText() .toString().trim()); int Last = Integer.parseInt(txtQuestion_SecondPart.getText() .toString().trim()); Answer = First + Last; } else if (operat.equals(Substract)) { MaxNumber = 100; int FirstPart = GenerateRandom(5, MaxNumber); txtQuestion_FirstPart.setText(String.valueOf(FirstPart)); int SecondPart = GenerateRandom(MinNumber, FirstPart); txtQuestion_SecondPart.setText(String.valueOf(SecondPart)); txtOperator.setText("-"); int First = Integer.parseInt(txtQuestion_FirstPart.getText() .toString().trim()); int Last = Integer.parseInt(txtQuestion_SecondPart.getText() .toString().trim()); Answer = First - Last; } else if (operat.equals(Multiply)) { MaxNumber = 30; int FirstPart = GenerateRandom(5, MaxNumber); txtQuestion_FirstPart.setText(String.valueOf(FirstPart)); int SecondPart = GenerateRandom(MinNumber, FirstPart); txtQuestion_SecondPart.setText(String.valueOf(SecondPart)); txtOperator.setText("x"); int First = Integer.parseInt(txtQuestion_FirstPart.getText() .toString().trim()); int Last = Integer.parseInt(txtQuestion_SecondPart.getText() .toString().trim()); Answer = First * Last; } Options.clear(); OptionsPositions.clear(); linQuestion.startAnimation(anim_slide_in_up); SetOptions(Answer); } private void SetOptions(int Answer) { CorrectAnsPosition = GenerateRandom(0, 3); OptionsPositions.add(CorrectAnsPosition); Options.put(CorrectAnsPosition, Answer); while (Options.size() != 4) { int OptAns = 0; if ((Answer - 10) > 0) OptAns = GenerateRandom(Answer - 10, Answer + 15); else OptAns = GenerateRandom(Answer, Answer + 25); if (!Options.containsValue(OptAns)) { int Pos = GenerateRandom(0, 3); if (!OptionsPositions.contains(Pos)) { Options.put(Pos, OptAns); OptionsPositions.add(Pos); } } } txtOption1.setText(String.valueOf(Options.get(0))); txtOption2.setText(String.valueOf(Options.get(1))); txtOption3.setText(String.valueOf(Options.get(2))); txtOption4.setText(String.valueOf(Options.get(3))); OptionsAnimation(); ClickEnable(); } private void OptionsAnimation() { txtOption1.startAnimation(anim_slide_in_up); txtOption2.startAnimation(anim_slide_in_up); txtOption3.startAnimation(anim_slide_in_up); txtOption4.startAnimation(anim_slide_in_up); } private void ClickDisable() { txtOption1.setClickable(false); txtOption2.setClickable(false); txtOption3.setClickable(false); txtOption4.setClickable(false); } private void ClickEnable() { txtOption1.setClickable(true); txtOption2.setClickable(true); txtOption3.setClickable(true); txtOption4.setClickable(true); } private void CheckAnswer(int Click) { ClickDisable(); txtAnswer.setVisibility(View.VISIBLE); int RightAns = Options.get(CorrectAnsPosition); if (Click == 1) { txtAnswer.setText(txtOption1.getText().toString().trim()); if (Integer.parseInt(txtOption1.getText().toString().trim()) == RightAns) { txtMessage.setText("Correct!!!"); } else { txtMessage.setText("Wrong!!!"); } } else if (Click == 2) { txtAnswer.setText(txtOption2.getText().toString().trim()); if (Integer.parseInt(txtOption2.getText().toString().trim()) == RightAns) { txtMessage.setText("Correct!!!"); } else { txtMessage.setText("Wrong!!!"); } } else if (Click == 3) { txtAnswer.setText(txtOption3.getText().toString().trim()); if (Integer.parseInt(txtOption3.getText().toString().trim()) == RightAns) { txtMessage.setText("Correct!!!"); } else { txtMessage.setText("Wrong!!!"); } } else if (Click == 4) { txtAnswer.setText(txtOption4.getText().toString().trim()); if (Integer.parseInt(txtOption4.getText().toString().trim()) == RightAns) { txtMessage.setText("Correct!!!"); } else { txtMessage.setText("Wrong!!!"); } } txtMessage.setVisibility(View.VISIBLE); txtMessage.startAnimation(anim_bounce_scale); Thread thread = new Thread() { @Override public void run() { try { sleep(3000); handler.post(new Runnable() { // This thread runs in the UI @Override public void run() { SetQuestionAndOptions(); // Update the UI } }); } catch (InterruptedException e) { e.printStackTrace(); } } }; thread.start(); } private int GenerateRandom(int Min, int Max) { Random r = new Random(); int i1 = r.nextInt(Max - Min + 1) + Min; return i1; } }