Hello! This is the main code for the Quiz activity in my Learn Hiragana app, available on the [Google Play store] (https://play.google.com/store/apps/details?id=com.novembergave.apps.learnhiragana). Any comments or questions, please feel free to let me know! App created as part of the Udacity Android for Beginners EU Scholarship course.
Last active
February 17, 2017 22:00
-
-
Save novembergave/ad19589c012cf3878c390176752c3989 to your computer and use it in GitHub Desktop.
Learn Hiragana (Quiz Activity)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.novembergave.apps.learnhiragana; | |
import android.content.Context; | |
import android.os.Bundle; | |
import android.os.Handler; | |
import android.support.v7.app.AppCompatActivity; | |
import android.view.MotionEvent; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.view.inputmethod.InputMethodManager; | |
import android.widget.Button; | |
import android.widget.EditText; | |
import android.widget.TextView; | |
import android.widget.Toast; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.Random; | |
public class QuizActivity extends AppCompatActivity { | |
/** | |
* String tags for OnSave and OnRestore | |
*/ | |
static final String QUIZ_SCORE = "quizScore"; | |
static final String QUESTIONS_SET = "questionsSet"; | |
static final String QUESTION_MCQ = "questionMCQ"; | |
static final String QUESTION_TYPE = "questionType"; | |
static final String BUTTON_ONE = "buttonOne"; | |
static final String BUTTON_TWO = "buttonTwo"; | |
static final String BUTTON_THREE = "buttonThree"; | |
static final String BUTTON_FOUR = "buttonFour"; | |
static final String HIRAGANA_LIST = "hiraganaList"; | |
static final String ROMANJI_LIST = "romanjiList"; | |
static final String QUIZ_COMPLETED = "quizCompleted"; | |
static final String TYPE_SHOWING = "quizType"; | |
static final String CORRECT_BUTTON = "correctButton"; | |
static final String QUESTION_COMPLETED = "questionCompleted"; | |
private static final Random rgenerator = new Random(); | |
TextView mQuestionTextView; | |
Button mButtonOne; | |
Button mButtonTwo; | |
Button mButtonThree; | |
Button mButtonFour; | |
ViewGroup mMCQGroup; | |
ViewGroup mTypeGroup; | |
TextView mTypeQuestionTextView; | |
EditText mEditText; | |
Button mSubmit; | |
ViewGroup mScoreGroup; | |
TextView mScoreText; | |
TextView mCommentText; | |
TextView mEditTextAnswer; | |
String question; | |
String answerOne; | |
String answerTwo; | |
String answerThree; | |
String answerFour; | |
String typeQuestion; | |
String answerType; | |
int mQuizScore = 0; | |
int mTotalNumberOfMCQs = 9; | |
int mNumberOfMCQsSet = 0; | |
int mHighScore = 10; | |
int mMiddleScore = 6; | |
int correctButton; | |
Boolean questionCompleted = false; | |
Boolean quizCompleted = false; | |
Boolean typeState = false; | |
ArrayList<String> hiraganaList; | |
ArrayList<String> romanjiList; | |
ArrayList<String> hiraganaWordList; | |
ArrayList<String> romanjiWordList; | |
private final Handler handlerTimer = new Handler(); | |
/** | |
* onClickListener to get the answers for the final Type question | |
*/ | |
private View.OnClickListener checkTypeOnClick = new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
checkTypeAnswers(); | |
quizCompleted = true; | |
handlerTimer.postDelayed(new Runnable() { | |
public void run() { | |
mTypeGroup.setVisibility(View.GONE); | |
mScoreGroup.setVisibility(View.VISIBLE); | |
mScoreText.setText(String.valueOf(mQuizScore)); | |
setCompletionSummary(); | |
} | |
}, 3000); | |
} | |
}; | |
/** | |
* onClickListener for setting the MCQ button as incorrect | |
*/ | |
private View.OnClickListener checkWrongMCQScore = new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
Toast.makeText(QuizActivity.this, getString(R.string.wrong_answer), Toast.LENGTH_SHORT).show(); | |
showCorrectMCQAnswer(); | |
questionCompleted = true; | |
handlerTimer.postDelayed(new Runnable() { | |
public void run() { | |
if (mNumberOfMCQsSet != mTotalNumberOfMCQs) { | |
getMCQuestions(); | |
} else { | |
mMCQGroup.setVisibility(View.GONE); | |
mTypeGroup.setVisibility(View.VISIBLE); | |
setTypeQandA(); | |
} | |
} | |
}, 5000); | |
} | |
; | |
}; | |
/** | |
* onClickListener for setting the MCQ button as correct | |
*/ | |
private View.OnClickListener checkCorrectMCQScore = new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
mQuizScore++; | |
Toast.makeText(QuizActivity.this, getString(R.string.correct_answer), Toast.LENGTH_SHORT).show(); | |
showCorrectMCQAnswer(); | |
questionCompleted = true; | |
handlerTimer.postDelayed(new Runnable() { | |
public void run() { | |
if (mNumberOfMCQsSet != mTotalNumberOfMCQs) { | |
getMCQuestions(); | |
} else { | |
mMCQGroup.setVisibility(View.GONE); | |
mTypeGroup.setVisibility(View.VISIBLE); | |
setTypeQandA(); | |
} | |
} | |
}, 2000); | |
} | |
; | |
}; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_quiz); | |
mMCQGroup = (ViewGroup) findViewById(R.id.quiz_mcq); | |
mQuestionTextView = (TextView) findViewById(R.id.question_textview); | |
mButtonOne = (Button) findViewById(R.id.button_one); | |
mButtonTwo = (Button) findViewById(R.id.button_two); | |
mButtonThree = (Button) findViewById(R.id.button_three); | |
mButtonFour = (Button) findViewById(R.id.button_four); | |
mTypeGroup = (ViewGroup) findViewById(R.id.quiz_type); | |
mTypeQuestionTextView = (TextView) findViewById(R.id.type_question_textview); | |
mEditText = (EditText) findViewById(R.id.edit_text); | |
mSubmit = (Button) findViewById(R.id.submit_button); | |
mScoreGroup = (ViewGroup) findViewById(R.id.final_score_view); | |
mScoreText = (TextView) findViewById(R.id.score_text_view); | |
mCommentText = (TextView) findViewById(R.id.comment_text_view); | |
mEditTextAnswer = (TextView) findViewById(R.id.edit_text_answer); | |
String[] mHiraganaString = getResources().getStringArray(R.array.hiragana_array); | |
String[] mRomanjiString = getResources().getStringArray(R.array.romanji_array); | |
String[] mHiraganaWordString = getResources().getStringArray(R.array.hiragana_words); | |
String[] mRomanjiWordString = getResources().getStringArray(R.array.romanji_words); | |
hiraganaList = new ArrayList<String>(Arrays.asList(mHiraganaString)); | |
romanjiList = new ArrayList<String>(Arrays.asList(mRomanjiString)); | |
hiraganaWordList = new ArrayList<String>(Arrays.asList(mHiraganaWordString)); | |
romanjiWordList = new ArrayList<String>(Arrays.asList(mRomanjiWordString)); | |
if (savedInstanceState != null) { | |
onRestoreInstanceState(savedInstanceState); | |
if (quizCompleted) { | |
mMCQGroup.setVisibility(View.GONE); | |
mTypeGroup.setVisibility(View.GONE); | |
mScoreGroup.setVisibility(View.VISIBLE); | |
mScoreText.setText(String.valueOf(mQuizScore)); | |
setCompletionSummary(); | |
} else if (typeState) { | |
mMCQGroup.setVisibility(View.GONE); | |
mTypeGroup.setVisibility(View.VISIBLE); | |
mTypeQuestionTextView.setText(typeQuestion); | |
if (questionCompleted) { | |
mEditTextAnswer.setText(romanjiWordList.get(hiraganaWordList.indexOf(typeQuestion))); | |
mEditText.setVisibility(View.GONE); | |
mEditTextAnswer.setVisibility(View.VISIBLE); | |
handlerTimer.postDelayed(new Runnable() { | |
public void run() { | |
mTypeGroup.setVisibility(View.GONE); | |
mScoreGroup.setVisibility(View.VISIBLE); | |
mScoreText.setText(String.valueOf(mQuizScore)); | |
setCompletionSummary(); | |
} | |
}, 2000); | |
} else { | |
mSubmit.setOnClickListener(checkTypeOnClick); | |
} | |
} else { | |
mMCQGroup.setVisibility(View.VISIBLE); | |
mTypeGroup.setVisibility(View.GONE); | |
mQuestionTextView.setText(question); | |
mButtonOne.setText(answerOne); | |
mButtonTwo.setText(answerTwo); | |
mButtonThree.setText(answerThree); | |
mButtonFour.setText(answerFour); | |
if (questionCompleted) { | |
showCorrectMCQAnswer(); | |
handlerTimer.postDelayed(new Runnable() { | |
public void run() { | |
getMCQuestions(); | |
} | |
}, 2000); | |
} else { | |
checkWhichButtonIsCorrect(); | |
} | |
} | |
} else { | |
getMCQuestions(); | |
} | |
} | |
@Override | |
protected void onSaveInstanceState(Bundle outState) { | |
outState.putBoolean(QUESTION_COMPLETED, questionCompleted); | |
outState.putBoolean(QUIZ_COMPLETED, quizCompleted); | |
outState.putBoolean(TYPE_SHOWING, typeState); | |
outState.putInt(QUIZ_SCORE, mQuizScore); | |
outState.putInt(QUESTIONS_SET, mNumberOfMCQsSet); | |
if (mMCQGroup.getVisibility() == View.VISIBLE) { | |
outState.putInt(CORRECT_BUTTON, correctButton); | |
outState.putString(QUESTION_MCQ, question); | |
outState.putString(BUTTON_ONE, answerOne); | |
outState.putString(BUTTON_TWO, answerTwo); | |
outState.putString(BUTTON_THREE, answerThree); | |
outState.putString(BUTTON_FOUR, answerFour); | |
} else if (mTypeGroup.getVisibility() == View.VISIBLE) { | |
outState.putString(QUESTION_TYPE, typeQuestion); | |
} | |
outState.putStringArrayList(HIRAGANA_LIST, hiraganaList); | |
outState.putStringArrayList(ROMANJI_LIST, romanjiList); | |
super.onSaveInstanceState(outState); | |
} | |
@Override | |
protected void onRestoreInstanceState(Bundle savedInstanceState) { | |
super.onRestoreInstanceState(savedInstanceState); | |
questionCompleted = savedInstanceState.getBoolean(QUESTION_COMPLETED); | |
quizCompleted = savedInstanceState.getBoolean(QUIZ_COMPLETED); | |
typeState = savedInstanceState.getBoolean(TYPE_SHOWING); | |
mQuizScore = savedInstanceState.getInt(QUIZ_SCORE); | |
mNumberOfMCQsSet = savedInstanceState.getInt(QUESTIONS_SET); | |
hiraganaList = savedInstanceState.getStringArrayList(HIRAGANA_LIST); | |
romanjiList = savedInstanceState.getStringArrayList(ROMANJI_LIST); | |
if (typeState) { | |
typeQuestion = savedInstanceState.getString(QUESTION_TYPE); | |
} else { | |
correctButton = savedInstanceState.getInt(CORRECT_BUTTON); | |
question = savedInstanceState.getString(QUESTION_MCQ); | |
answerOne = savedInstanceState.getString(BUTTON_ONE); | |
answerTwo = savedInstanceState.getString(BUTTON_TWO); | |
answerThree = savedInstanceState.getString(BUTTON_THREE); | |
answerFour = savedInstanceState.getString(BUTTON_FOUR); | |
} | |
} | |
private void checkWhichButtonIsCorrect() { | |
switch (correctButton) { | |
case 1: | |
mButtonOne.setOnClickListener(checkCorrectMCQScore); | |
mButtonTwo.setOnClickListener(checkWrongMCQScore); | |
mButtonThree.setOnClickListener(checkWrongMCQScore); | |
mButtonFour.setOnClickListener(checkWrongMCQScore); | |
break; | |
case 2: | |
mButtonOne.setOnClickListener(checkWrongMCQScore); | |
mButtonTwo.setOnClickListener(checkCorrectMCQScore); | |
mButtonThree.setOnClickListener(checkWrongMCQScore); | |
mButtonFour.setOnClickListener(checkWrongMCQScore); | |
break; | |
case 3: | |
mButtonOne.setOnClickListener(checkWrongMCQScore); | |
mButtonTwo.setOnClickListener(checkWrongMCQScore); | |
mButtonThree.setOnClickListener(checkCorrectMCQScore); | |
mButtonFour.setOnClickListener(checkWrongMCQScore); | |
break; | |
case 4: | |
mButtonOne.setOnClickListener(checkWrongMCQScore); | |
mButtonTwo.setOnClickListener(checkWrongMCQScore); | |
mButtonThree.setOnClickListener(checkWrongMCQScore); | |
mButtonFour.setOnClickListener(checkCorrectMCQScore); | |
break; | |
} | |
} | |
private void getHiraganaQ() { | |
int randomWordLocation = rgenerator.nextInt(hiraganaList.size() - 1); | |
int secondRandomWordLocation = rgenerator.nextInt(romanjiList.size() - 1); | |
int thirdRandomWordLocation = rgenerator.nextInt(romanjiList.size() - 1); | |
int fourthRandomWordLocation = rgenerator.nextInt(romanjiList.size() - 1); | |
if (secondRandomWordLocation == thirdRandomWordLocation || | |
secondRandomWordLocation == fourthRandomWordLocation) { | |
secondRandomWordLocation = rgenerator.nextInt(romanjiList.size() - 1); | |
} else if (thirdRandomWordLocation == fourthRandomWordLocation) { | |
thirdRandomWordLocation = rgenerator.nextInt(romanjiList.size() - 1); | |
} | |
question = hiraganaList.get(randomWordLocation); | |
mButtonOne.setVisibility(View.VISIBLE); | |
mButtonTwo.setVisibility(View.VISIBLE); | |
mButtonThree.setVisibility(View.VISIBLE); | |
mButtonFour.setVisibility(View.VISIBLE); | |
mButtonOne.setEnabled(true); | |
mButtonTwo.setEnabled(true); | |
mButtonThree.setEnabled(true); | |
mButtonFour.setEnabled(true); | |
mButtonOne.setOnClickListener(checkWrongMCQScore); | |
mButtonTwo.setOnClickListener(checkWrongMCQScore); | |
mButtonThree.setOnClickListener(checkWrongMCQScore); | |
mButtonFour.setOnClickListener(checkWrongMCQScore); | |
correctButton = rgenerator.nextInt(4) + 1; | |
switch (correctButton) { | |
case 1: | |
answerOne = romanjiList.get(randomWordLocation); | |
mButtonOne.setOnClickListener(checkCorrectMCQScore); | |
hiraganaList.remove(randomWordLocation); | |
romanjiList.remove(randomWordLocation); | |
answerTwo = romanjiList.get(secondRandomWordLocation); | |
answerThree = romanjiList.get(thirdRandomWordLocation); | |
answerFour = romanjiList.get(fourthRandomWordLocation); | |
break; | |
case 2: | |
answerTwo = romanjiList.get(randomWordLocation); | |
mButtonTwo.setOnClickListener(checkCorrectMCQScore); | |
hiraganaList.remove(randomWordLocation); | |
romanjiList.remove(randomWordLocation); | |
answerOne = romanjiList.get(secondRandomWordLocation); | |
answerThree = romanjiList.get(thirdRandomWordLocation); | |
answerFour = romanjiList.get(fourthRandomWordLocation); | |
break; | |
case 3: | |
answerThree = romanjiList.get(randomWordLocation); | |
mButtonThree.setOnClickListener(checkCorrectMCQScore); | |
hiraganaList.remove(randomWordLocation); | |
romanjiList.remove(randomWordLocation); | |
answerOne = romanjiList.get(secondRandomWordLocation); | |
answerTwo = romanjiList.get(thirdRandomWordLocation); | |
answerFour = romanjiList.get(fourthRandomWordLocation); | |
break; | |
case 4: | |
answerFour = romanjiList.get(randomWordLocation); | |
mButtonFour.setOnClickListener(checkCorrectMCQScore); | |
hiraganaList.remove(randomWordLocation); | |
romanjiList.remove(randomWordLocation); | |
answerOne = romanjiList.get(secondRandomWordLocation); | |
answerTwo = romanjiList.get(thirdRandomWordLocation); | |
answerThree = romanjiList.get(fourthRandomWordLocation); | |
break; | |
} | |
} | |
private void getMCQuestions() { | |
questionCompleted = false; | |
getHiraganaQ(); | |
mQuestionTextView.setText(question); | |
mButtonOne.setText(answerOne); | |
mButtonTwo.setText(answerTwo); | |
mButtonThree.setText(answerThree); | |
mButtonFour.setText(answerFour); | |
mNumberOfMCQsSet++; | |
} | |
private void getTypeQuestions() { | |
typeState = true; | |
int randomWordLocation = rgenerator.nextInt(hiraganaWordList.size()); | |
typeQuestion = hiraganaWordList.get(randomWordLocation); | |
mTypeQuestionTextView.setText(typeQuestion); | |
} | |
private void checkTypeAnswers() { | |
mSubmit.setEnabled(false); | |
int hiraganaLocation = hiraganaWordList.indexOf(typeQuestion); | |
String answer = romanjiWordList.get(hiraganaLocation); | |
answerType = mEditText.getText().toString().trim(); | |
if (answerType.equalsIgnoreCase(answer)) { | |
mQuizScore++; | |
Toast.makeText(QuizActivity.this, getString(R.string.correct_answer), Toast.LENGTH_SHORT).show(); | |
} else { | |
Toast.makeText(QuizActivity.this, getString(R.string.wrong_answer), Toast.LENGTH_SHORT).show(); | |
} | |
mEditText.setVisibility(View.GONE); | |
mEditTextAnswer.setVisibility(View.VISIBLE); | |
mEditTextAnswer.setText(answer); | |
} | |
private void setTypeQandA() { | |
questionCompleted = false; | |
getTypeQuestions(); | |
mSubmit.setOnClickListener(checkTypeOnClick); | |
} | |
private void setCompletionSummary() { | |
if (mQuizScore >= mHighScore) { | |
mCommentText.setText(getString(R.string.well_done)); | |
} else if (mQuizScore >= mMiddleScore) { | |
mCommentText.setText(getString(R.string.almost_there)); | |
} else { | |
mCommentText.setText(getString(R.string.practice_makes_perfect)); | |
} | |
} | |
private void showCorrectMCQAnswer() { | |
switch (correctButton) { | |
case 1: | |
mButtonOne.setEnabled(false); | |
mButtonTwo.setVisibility(View.GONE); | |
mButtonThree.setVisibility(View.GONE); | |
mButtonFour.setVisibility(View.GONE); | |
break; | |
case 2: | |
mButtonOne.setVisibility(View.GONE); | |
mButtonTwo.setEnabled(false); | |
mButtonThree.setVisibility(View.GONE); | |
mButtonFour.setVisibility(View.GONE); | |
break; | |
case 3: | |
mButtonOne.setVisibility(View.GONE); | |
mButtonTwo.setVisibility(View.GONE); | |
mButtonThree.setEnabled(false); | |
mButtonFour.setVisibility(View.GONE); | |
break; | |
case 4: | |
mButtonOne.setVisibility(View.GONE); | |
mButtonTwo.setVisibility(View.GONE); | |
mButtonThree.setVisibility(View.GONE); | |
mButtonFour.setEnabled(false); | |
break; | |
} | |
} | |
/** | |
* Hide keyboard when the EditText is not selected. Got this from StackOverflow | |
* | |
* @param ev | |
* @return | |
*/ | |
@Override | |
public boolean dispatchTouchEvent(MotionEvent ev) { | |
View view = getCurrentFocus(); | |
if (view != null && (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_MOVE) && view instanceof EditText && !view.getClass().getName().startsWith("android.webkit.")) { | |
int scrcoords[] = new int[2]; | |
view.getLocationOnScreen(scrcoords); | |
float x = ev.getRawX() + view.getLeft() - scrcoords[0]; | |
float y = ev.getRawY() + view.getTop() - scrcoords[1]; | |
if (x < view.getLeft() || x > view.getRight() || y < view.getTop() || y > view.getBottom()) | |
((InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow((this.getWindow().getDecorView().getApplicationWindowToken()), 0); | |
} | |
return super.dispatchTouchEvent(ev); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:id="@+id/activity_quiz" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:orientation="vertical" | |
android:paddingBottom="@dimen/activity_vertical_margin" | |
android:paddingLeft="@dimen/activity_horizontal_margin" | |
android:paddingRight="@dimen/activity_horizontal_margin" | |
android:paddingTop="@dimen/activity_vertical_margin" | |
tools:context="com.novembergave.apps.learnhiragana.QuizActivity"> | |
<LinearLayout | |
android:id="@+id/quiz_mcq" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:orientation="vertical" | |
android:visibility="visible"> | |
<TextView | |
android:id="@+id/question_textview" | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="2" | |
android:gravity="center" | |
android:textColor="@color/hiraganaColor" | |
android:textSize="80sp" | |
android:textStyle="bold" | |
tools:text="@string/hiragana_a" /> | |
<LinearLayout | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="1" | |
android:gravity="center" | |
android:orientation="vertical"> | |
<LinearLayout | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="1" | |
android:gravity="center" | |
android:orientation="horizontal"> | |
<Button | |
android:id="@+id/button_one" | |
android:layout_width="0dp" | |
android:layout_height="wrap_content" | |
android:layout_marginEnd="10dp" | |
android:layout_marginRight="10dp" | |
android:layout_weight="1" | |
android:padding="10dp" | |
tools:text="@string/romanji_ba" /> | |
<Button | |
android:id="@+id/button_two" | |
android:layout_width="0dp" | |
android:layout_height="wrap_content" | |
android:layout_marginLeft="10dp" | |
android:layout_marginStart="10dp" | |
android:layout_weight="1" | |
android:padding="10dp" | |
tools:text="@string/romanji_ha" /> | |
</LinearLayout> | |
<LinearLayout | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="1" | |
android:gravity="center" | |
android:orientation="horizontal"> | |
<Button | |
android:id="@+id/button_three" | |
android:layout_width="0dp" | |
android:layout_height="wrap_content" | |
android:layout_marginEnd="10dp" | |
android:layout_marginRight="10dp" | |
android:layout_weight="1" | |
android:padding="10dp" | |
tools:text="@string/romanji_ma" /> | |
<Button | |
android:id="@+id/button_four" | |
android:layout_width="0dp" | |
android:layout_height="wrap_content" | |
android:layout_marginLeft="10dp" | |
android:layout_marginStart="10dp" | |
android:layout_weight="1" | |
android:padding="10dp" | |
tools:text="@string/romanji_a" /> | |
</LinearLayout> | |
</LinearLayout> | |
</LinearLayout> | |
<LinearLayout | |
android:id="@+id/quiz_type" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:orientation="vertical" | |
android:visibility="gone"> | |
<TextView | |
android:id="@+id/type_question_textview" | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="4" | |
android:gravity="center" | |
android:padding="20dp" | |
android:textColor="@color/hiraganaColor" | |
android:textSize="80sp" | |
android:textStyle="bold" | |
tools:text="@string/hiragana_a" /> | |
<LinearLayout | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="1" | |
android:orientation="horizontal" | |
android:weightSum="1"> | |
<EditText | |
android:id="@+id/edit_text" | |
android:layout_width="0dp" | |
android:layout_height="match_parent" | |
android:layout_weight="0.7" | |
android:gravity="center" | |
android:hint="@string/hint" | |
android:imeOptions="actionDone" | |
android:inputType="text" | |
android:maxLines="1" | |
android:padding="10dp" | |
tools:text="@string/hint" /> | |
<TextView | |
android:id="@+id/edit_text_answer" | |
android:layout_width="0dp" | |
android:layout_height="match_parent" | |
android:layout_weight="0.7" | |
android:gravity="center" | |
android:padding="10dp" | |
android:visibility="gone" | |
tools:text="@string/romanji_ba" /> | |
<Button | |
android:id="@+id/submit_button" | |
android:layout_width="0dp" | |
android:layout_height="match_parent" | |
android:layout_weight="0.3" | |
android:text="@string/submit" /> | |
</LinearLayout> | |
</LinearLayout> | |
<LinearLayout | |
android:id="@+id/final_score_view" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:orientation="vertical" | |
android:visibility="gone"> | |
<TextView | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="1" | |
android:gravity="center" | |
android:text="@string/total_score" /> | |
<TextView | |
android:id="@+id/score_text_view" | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="2" | |
android:gravity="center" | |
android:textColor="@color/hiraganaColor" | |
android:textSize="40sp" | |
android:textStyle="bold" | |
tools:text="5" /> | |
<TextView | |
android:id="@+id/comment_text_view" | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="1" | |
android:gravity="center" | |
tools:text="@string/practice_makes_perfect" /> | |
</LinearLayout> | |
</LinearLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<resources> | |
<string name="app_name">Learn Hiragana</string> | |
<string name="category_learning">Hiragana List</string> | |
<string name="category_quiz">Hiragana Quiz</string> | |
<string name="hint">Type the Romanji</string> | |
<string name="submit">Submit</string> | |
<string name="correct_answer">Correct Answer!</string> | |
<string name="wrong_answer">Wrong Answer!</string> | |
<string name="total_score">Total Score</string> | |
<string name="well_done">Well done!</string> | |
<string name="almost_there">Almost there!</string> | |
<string name="practice_makes_perfect">Practice makes perfect!</string> | |
<string name="website">http://www.novembergave.com</string> | |
<string name="hiragana_a">あ</string> | |
<string name="hiragana_i">い</string> | |
<string name="hiragana_u">う</string> | |
<string name="hiragana_e">え</string> | |
<string name="hiragana_o">お</string> | |
<string name="hiragana_ka">か</string> | |
<string name="hiragana_ki">き</string> | |
<string name="hiragana_ku">く</string> | |
<string name="hiragana_ke">け</string> | |
<string name="hiragana_ko">こ</string> | |
<string name="hiragana_sa">さ</string> | |
<string name="hiragana_shi">し</string> | |
<string name="hiragana_su">す</string> | |
<string name="hiragana_se">せ</string> | |
<string name="hiragana_so">そ</string> | |
<string name="hiragana_ta">た</string> | |
<string name="hiragana_chi">ち</string> | |
<string name="hiragana_tsu">つ</string> | |
<string name="hiragana_te">て</string> | |
<string name="hiragana_to">と</string> | |
<string name="hiragana_na">な</string> | |
<string name="hiragana_ni">に</string> | |
<string name="hiragana_nu">ぬ</string> | |
<string name="hiragana_ne">ね</string> | |
<string name="hiragana_no">の</string> | |
<string name="hiragana_ha">は</string> | |
<string name="hiragana_hi">ひ</string> | |
<string name="hiragana_hu">ふ</string> | |
<string name="hiragana_he">へ</string> | |
<string name="hiragana_ho">ほ</string> | |
<string name="hiragana_ma">ま</string> | |
<string name="hiragana_mi">み</string> | |
<string name="hiragana_mu">む</string> | |
<string name="hiragana_me">め</string> | |
<string name="hiragana_mo">も</string> | |
<string name="hiragana_ya">や</string> | |
<string name="hiragana_yu">ゆ</string> | |
<string name="hiragana_yo">よ</string> | |
<string name="hiragana_ra">ら</string> | |
<string name="hiragana_ri">り</string> | |
<string name="hiragana_ru">る</string> | |
<string name="hiragana_re">れ</string> | |
<string name="hiragana_ro">ろ</string> | |
<string name="hiragana_wa">わ</string> | |
<string name="hiragana_wo">を</string> | |
<string name="hiragana_n">ん</string> | |
<string name="hiragana_ga">が</string> | |
<string name="hiragana_gi">ぎ</string> | |
<string name="hiragana_gu">ぐ</string> | |
<string name="hiragana_ge">げ</string> | |
<string name="hiragana_go">ご</string> | |
<string name="hiragana_za">ざ</string> | |
<string name="hiragana_ji">じ</string> | |
<string name="hiragana_zu">ず</string> | |
<string name="hiragana_ze">ぜ</string> | |
<string name="hiragana_zo">ぞ</string> | |
<string name="hiragana_da">だ</string> | |
<string name="hiragana_dji">ぢ</string> | |
<string name="hiragana_dzu">づ</string> | |
<string name="hiragana_de">で</string> | |
<string name="hiragana_do">ど</string> | |
<string name="hiragana_ba">ば</string> | |
<string name="hiragana_bi">び</string> | |
<string name="hiragana_bu">ぶ</string> | |
<string name="hiragana_be">べ</string> | |
<string name="hiragana_bo">ぼ</string> | |
<string name="hiragana_pa">ぱ</string> | |
<string name="hiragana_pi">ぴ</string> | |
<string name="hiragana_pu">ぷ</string> | |
<string name="hiragana_pe">ぺ</string> | |
<string name="hiragana_po">ぽ</string> | |
<string name="romanji_a">a</string> | |
<string name="romanji_i">i</string> | |
<string name="romanji_u">u</string> | |
<string name="romanji_e">e</string> | |
<string name="romanji_o">o</string> | |
<string name="romanji_ka">ka</string> | |
<string name="romanji_ki">ki</string> | |
<string name="romanji_ku">ku</string> | |
<string name="romanji_ke">ke</string> | |
<string name="romanji_ko">ko</string> | |
<string name="romanji_sa">sa</string> | |
<string name="romanji_shi">shi</string> | |
<string name="romanji_su">su</string> | |
<string name="romanji_se">se</string> | |
<string name="romanji_so">so</string> | |
<string name="romanji_ta">ta</string> | |
<string name="romanji_chi">chi</string> | |
<string name="romanji_tsu">tsu</string> | |
<string name="romanji_te">te</string> | |
<string name="romanji_to">to</string> | |
<string name="romanji_na">na</string> | |
<string name="romanji_ni">ni</string> | |
<string name="romanji_nu">nu</string> | |
<string name="romanji_ne">ne</string> | |
<string name="romanji_no">no</string> | |
<string name="romanji_ha">ha</string> | |
<string name="romanji_hi">hi</string> | |
<string name="romanji_hu">hu</string> | |
<string name="romanji_he">he</string> | |
<string name="romanji_ho">ho</string> | |
<string name="romanji_ma">ma</string> | |
<string name="romanji_mi">mi</string> | |
<string name="romanji_mu">mu</string> | |
<string name="romanji_me">me</string> | |
<string name="romanji_mo">mo</string> | |
<string name="romanji_ya">ya</string> | |
<string name="romanji_yu">yu</string> | |
<string name="romanji_yo">yo</string> | |
<string name="romanji_ra">ra</string> | |
<string name="romanji_ri">ri</string> | |
<string name="romanji_ru">ru</string> | |
<string name="romanji_re">re</string> | |
<string name="romanji_ro">ro</string> | |
<string name="romanji_wa">wa</string> | |
<string name="romanji_wo">o</string> | |
<string name="romanji_n">n</string> | |
<string name="romanji_ga">ga</string> | |
<string name="romanji_gi">gi</string> | |
<string name="romanji_gu">gu</string> | |
<string name="romanji_ge">ge</string> | |
<string name="romanji_go">go</string> | |
<string name="romanji_za">za</string> | |
<string name="romanji_ji">ji</string> | |
<string name="romanji_zu">zu</string> | |
<string name="romanji_ze">ze</string> | |
<string name="romanji_zo">zo</string> | |
<string name="romanji_da">da</string> | |
<string name="romanji_dji">(d)ji</string> | |
<string name="romanji_dzu">zu</string> | |
<string name="romanji_de">de</string> | |
<string name="romanji_do">do</string> | |
<string name="romanji_ba">ba</string> | |
<string name="romanji_bi">bi</string> | |
<string name="romanji_bu">bu</string> | |
<string name="romanji_be">be</string> | |
<string name="romanji_bo">bo</string> | |
<string name="romanji_pa">pa</string> | |
<string name="romanji_pi">pi</string> | |
<string name="romanji_pu">pu</string> | |
<string name="romanji_pe">pe</string> | |
<string name="romanji_po">po</string> | |
<string-array name="hiragana_array"> | |
<item>@string/hiragana_a</item> | |
<item>@string/hiragana_i</item> | |
<item>@string/hiragana_u</item> | |
<item>@string/hiragana_e</item> | |
<item>@string/hiragana_o</item> | |
<item>@string/hiragana_ka</item> | |
<item>@string/hiragana_ki</item> | |
<item>@string/hiragana_ku</item> | |
<item>@string/hiragana_ke</item> | |
<item>@string/hiragana_ko</item> | |
<item>@string/hiragana_sa</item> | |
<item>@string/hiragana_shi</item> | |
<item>@string/hiragana_su</item> | |
<item>@string/hiragana_se</item> | |
<item>@string/hiragana_so</item> | |
<item>@string/hiragana_ta</item> | |
<item>@string/hiragana_chi</item> | |
<item>@string/hiragana_tsu</item> | |
<item>@string/hiragana_te</item> | |
<item>@string/hiragana_to</item> | |
<item>@string/hiragana_na</item> | |
<item>@string/hiragana_ni</item> | |
<item>@string/hiragana_nu</item> | |
<item>@string/hiragana_ne</item> | |
<item>@string/hiragana_no</item> | |
<item>@string/hiragana_ha</item> | |
<item>@string/hiragana_hi</item> | |
<item>@string/hiragana_hu</item> | |
<item>@string/hiragana_he</item> | |
<item>@string/hiragana_ho</item> | |
<item>@string/hiragana_ma</item> | |
<item>@string/hiragana_mi</item> | |
<item>@string/hiragana_mu</item> | |
<item>@string/hiragana_me</item> | |
<item>@string/hiragana_mo</item> | |
<item>@string/hiragana_ya</item> | |
<item>@string/hiragana_yu</item> | |
<item>@string/hiragana_yo</item> | |
<item>@string/hiragana_ra</item> | |
<item>@string/hiragana_ri</item> | |
<item>@string/hiragana_ru</item> | |
<item>@string/hiragana_re</item> | |
<item>@string/hiragana_ro</item> | |
<item>@string/hiragana_wa</item> | |
<item>@string/hiragana_wo</item> | |
<item>@string/hiragana_n</item> | |
<item>@string/hiragana_ga</item> | |
<item>@string/hiragana_gi</item> | |
<item>@string/hiragana_gu</item> | |
<item>@string/hiragana_ge</item> | |
<item>@string/hiragana_go</item> | |
<item>@string/hiragana_za</item> | |
<item>@string/hiragana_ji</item> | |
<item>@string/hiragana_zu</item> | |
<item>@string/hiragana_ze</item> | |
<item>@string/hiragana_zo</item> | |
<item>@string/hiragana_da</item> | |
<item>@string/hiragana_dji</item> | |
<item>@string/hiragana_dzu</item> | |
<item>@string/hiragana_de</item> | |
<item>@string/hiragana_do</item> | |
<item>@string/hiragana_ba</item> | |
<item>@string/hiragana_bi</item> | |
<item>@string/hiragana_bu</item> | |
<item>@string/hiragana_be</item> | |
<item>@string/hiragana_bo</item> | |
<item>@string/hiragana_pa</item> | |
<item>@string/hiragana_pi</item> | |
<item>@string/hiragana_pu</item> | |
<item>@string/hiragana_pe</item> | |
<item>@string/hiragana_po</item> | |
</string-array> | |
<string-array name="romanji_array"> | |
<item>@string/romanji_a</item> | |
<item>@string/romanji_i</item> | |
<item>@string/romanji_u</item> | |
<item>@string/romanji_e</item> | |
<item>@string/romanji_o</item> | |
<item>@string/romanji_ka</item> | |
<item>@string/romanji_ki</item> | |
<item>@string/romanji_ku</item> | |
<item>@string/romanji_ke</item> | |
<item>@string/romanji_ko</item> | |
<item>@string/romanji_sa</item> | |
<item>@string/romanji_shi</item> | |
<item>@string/romanji_su</item> | |
<item>@string/romanji_se</item> | |
<item>@string/romanji_so</item> | |
<item>@string/romanji_ta</item> | |
<item>@string/romanji_chi</item> | |
<item>@string/romanji_tsu</item> | |
<item>@string/romanji_te</item> | |
<item>@string/romanji_to</item> | |
<item>@string/romanji_na</item> | |
<item>@string/romanji_ni</item> | |
<item>@string/romanji_nu</item> | |
<item>@string/romanji_ne</item> | |
<item>@string/romanji_no</item> | |
<item>@string/romanji_ha</item> | |
<item>@string/romanji_hi</item> | |
<item>@string/romanji_hu</item> | |
<item>@string/romanji_he</item> | |
<item>@string/romanji_ho</item> | |
<item>@string/romanji_ma</item> | |
<item>@string/romanji_mi</item> | |
<item>@string/romanji_mu</item> | |
<item>@string/romanji_me</item> | |
<item>@string/romanji_mo</item> | |
<item>@string/romanji_ya</item> | |
<item>@string/romanji_yu</item> | |
<item>@string/romanji_yo</item> | |
<item>@string/romanji_ra</item> | |
<item>@string/romanji_ri</item> | |
<item>@string/romanji_ru</item> | |
<item>@string/romanji_re</item> | |
<item>@string/romanji_ro</item> | |
<item>@string/romanji_wa</item> | |
<item>@string/romanji_wo</item> | |
<item>@string/romanji_n</item> | |
<item>@string/romanji_ga</item> | |
<item>@string/romanji_gi</item> | |
<item>@string/romanji_gu</item> | |
<item>@string/romanji_ge</item> | |
<item>@string/romanji_go</item> | |
<item>@string/romanji_za</item> | |
<item>@string/romanji_ji</item> | |
<item>@string/romanji_zu</item> | |
<item>@string/romanji_ze</item> | |
<item>@string/romanji_zo</item> | |
<item>@string/romanji_da</item> | |
<item>@string/romanji_dji</item> | |
<item>@string/romanji_dzu</item> | |
<item>@string/romanji_de</item> | |
<item>@string/romanji_do</item> | |
<item>@string/romanji_ba</item> | |
<item>@string/romanji_bi</item> | |
<item>@string/romanji_bu</item> | |
<item>@string/romanji_be</item> | |
<item>@string/romanji_bo</item> | |
<item>@string/romanji_pa</item> | |
<item>@string/romanji_pi</item> | |
<item>@string/romanji_pu</item> | |
<item>@string/romanji_pe</item> | |
<item>@string/romanji_po</item> | |
</string-array> | |
<string-array name="hiragana_words"> | |
<item>ありがとう</item> | |
<item>さようなら</item> | |
<item>こんにちわ</item> | |
<item>おやすみ</item> | |
<item>もしもし</item> | |
</string-array> | |
<string-array name="romanji_words"> | |
<item>arigatou</item> | |
<item>sayounara</item> | |
<item>konnichiwa</item> | |
<item>oyasumi</item> | |
<item>moshimoshi</item> | |
</string-array> | |
</resources> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment