Обучение студентов японскому языку

Содержание начального уровня владения японским языком. Описание лингвистического эксперимента, составление упражнений. Разработка Android-приложения, системные требования. Сдача международного экзамена по определению уровня владения японским языком.

Рубрика Педагогика
Вид дипломная работа
Язык русский
Дата добавления 10.02.2017
Размер файла 2,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

9. Нижегородский лингвистический университет им. Н.А. Добролюбова [Электронный ресурс]. - Режим доступа: http://www.lunn.ru/?id=5052&query_id=319245, свободный.

10. Сайт «Cnews» [Электронный ресурс]. - Режим доступа: http://www.cnews.ru/news/top/rost_rynka_smartfonov_i_platformy_android, свободный.

11. Сайт Japanese-Language proficiency Test [Электронный ресурс]. - Режим доступа: http://www.jlpt.jp/e/about/comparison.html, свободный.

12. Самохина Н.В. Использование мобильных технологий при обучении английскому языку: развитие традиций и поиск новых методических моделей // Фундаментальные исследования. 2014. № 6-3

13. Скотт, К. Java для студента/ К. Скотт - Спб.: БХВ-Петербург, 2007. - 448 с.: ил.

14. Сон И.С. Мобильное обучение в изучении иностранных языков [Текст] // Теория и практика образования в современном мире: материалы III междунар. науч. конф. (г. Санкт-Петербург, май 2013 г.). -- СПб.: Реноме, 2013. -- С. 164-167.

15. Харди, Б., Филлипс Б. Программирование под Android. Для профессионалов/Б. Харди, Б. Филлипс -- СПб.: Питер, 2014. -- 592 с.: ил.

16. Шилдт, Г. Java 8. Полное руководство; 9-е изд.: Пер. с англ. - М.: ООО "И.Д. Вильяме", 2015. - 1376 с.: ил.

17. Шилдт, Г. Java: руководство для начинающих / Г. Шилдт; пер. с англ. - М.: ООО «И.Д. Вильямс», 2015. - 624 с.: ил.

18. Шишковская Ю.В. Использование мобильных устройств в педагогической практике // Молодой ученый. -- 2015. -- № 11. -- С. 1519-1521.

19. Эккель, Б. Философия Java. Библиотека программиста/ Б. Эккель - Спб.: Питер, 2009. - 640 с.: ил.

20. Японский центр в Нижнем Новгороде [Электронный ресурс]. - Режим доступа: http://www.jcnn.ru/about/history.php, свободный.

21. Common European framework of reference for languages: Learning, Teaching, Assessment//Сайт Совета Европы [Электронный ресурс]. - Режим доступа: http://www.coe.int/t/dg4/linguistic/Source/Framework_EN.pdf, свободный.

22. Godwin-Jones, R. Emerging technologies mobile apps for language learning[Текст]/ R. Jones// Language Learning & Technology ,2011- Volume 15, Number 2 (June 2011). - pp. 2-11.

23. Japan Foundation [Электронный ресурс]. - Режим доступа: http://jpfmw.ru/ru/yaponskij-yazyik/jfcouza.html, свободный.

24. Makino, S. A Dictionary of basic Japanese grammar/ S. Makino, M.Tsutsui - Токио: The Japan Times, 2000. - 152 c.

25. Shin Nihongo no kiso I. Грамматический комментарий на русском языке, 3А Corporation, Токио: Chiyoda-ku, 1996 - 120 c.

Приложение 1

Экраны приложения “KotobaQuiz”

Приложение 2

Исходный java-код

package com.lyubov.app.kotobaquiz.customization;

public interface ThemeKeys {

Integer ORIGINAL_THEME_KEY = 1;

Integer DARK_THEME_KEY = 2;

Integer NEUTRAL_THEME_KEY = 3;

}

import android.app.Activity;

import android.content.Context;

import android.util.SparseArray;

import android.widget.RelativeLayout;

import com.lyubov.app.kotobaquiz.R;

import com.lyubov.app.kotobaquiz.preferences.PreferencesManager;

public class BackgroundManager implements ThemeKeys {

private static final String THEME_PRFERENCES = "theme_preferences";

private static final String THEME_KEY = "radio_button_theme";

private static BackgroundManager sInstance;

private PreferencesManager mPrefManager

private SparseArray<Integer> mThemes;

public static BackgroundManager getInstance() {

if (sInstance == null) {

return sInstance = new BackgroundManager();

} else {

return sInstance;

}

}

private BackgroundManager() {

}

public void init(Context context) {

mPrefManager = new PreferencesManager(context.getSharedPreferences(THEME_PRFERENCES,

Activity.MODE_PRIVATE));

mThemes = new SparseArray<>(3);

mThemes.put(ORIGINAL_THEME_KEY, R.drawable.background_original);

mThemes.put(DARK_THEME_KEY, R.drawable.backbround_dark);

mThemes.put(NEUTRAL_THEME_KEY, R.drawable.background_neutral);

}

public void setTheme(RelativeLayout layout) {

int theme = mPrefManager.getPreference().getInt(THEME_KEY, ORIGINAL_THEME_KEY);

if (mThemes.get(theme) != null) {

layout.setBackground(layout.getResources().getDrawable(mThemes.get(theme)));

}

}

public void saveTheme(int radioId) {

mPrefManager.savePreference(THEME_KEY, radioId);

}

public int loadTheme() {

return mPrefManager.loadPreferences(THEME_KEY, 1);

}

public void deleteManager() {

sInstance = null;

}

}

package com.lyubov.app.kotobaquiz.customization;

import android.app.Activity;

import android.content.Context;

import android.media.MediaPlayer;

import com.lyubov.app.kotobaquiz.R;

import com.lyubov.app.kotobaquiz.preferences.PreferencesManager;

public class SoundManager {

private static final String SOUND_PREFERENCES = "sound_preferences";

private static final String SOUND_KEY = "sound_enable_checkbox";

private static SoundManager sInstance;

private PreferencesManager mPrefManager;

private boolean mState;

public static SoundManager getInstance() {

if (sInstance == null) {

return sInstance = new SoundManager();

} else {

return sInstance;

}

}

private SoundManager() {

}

public boolean getState() {

return mState;

}

public void playSoundClick(final Context context) {

new Thread(new Runnable() {

@Override

public void run() {

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.button_click);

mediaPlayer.start();

}

}).start();

}

public void init(Context context) {

mPrefManager = new PreferencesManager(context.getSharedPreferences(SOUND_PREFERENCES,

Activity.MODE_PRIVATE));

}

public boolean loadState() {

mState = mPrefManager.loadPreferences(SOUND_KEY, false);

return mState;

}

public void saveState(boolean state) {

mState = state;

mPrefManager.savePreference(SOUND_KEY, state);

}

public void deleteManager() {

sInstance = null;

}

}

package com.lyubov.app.kotobaquiz.database;

import android.content.Context;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

public class ExternalDbOpenHelper extends SQLiteOpenHelper {

private final String DB_PATH;

private final String DB_NAME;

private SQLiteDatabase database;

private final Context context;

public ExternalDbOpenHelper(Context context, String databaseName) {

super(context, databaseName, null, 1);

this.context = context;

String packageName = context.getPackageName();

DB_PATH = String.format("//data//data//com.lyubov.app.kotobaquiz//databases//", packageName);

DB_NAME = databaseName;

try {

openDataBase();

} catch (SQLException e) {

e.printStackTrace();

}

}

private void createDataBase() {

boolean dbExist = checkDataBase();

if (!dbExist) {

this.getReadableDatabase();

try {

copyDataBase();

} catch (IOException e) {

Log.e(this.getClass().toString(), "Copying error");

throw new Error("Error copying database!");

}

} else {

Log.i(this.getClass().toString(), "Database already exists");

}

}

private boolean checkDataBase() {

SQLiteDatabase checkDb = null;

try {

String path = DB_PATH + DB_NAME;

checkDb = SQLiteDatabase.openDatabase(path, null,

SQLiteDatabase.OPEN_READONLY);

} catch (android.database.SQLException e) {

Log.e(this.getClass().toString(), "Error while checking db");

}

if (checkDb != null) {

checkDb.close();

}

return checkDb != null;

}

private void copyDataBase() throws IOException {

InputStream externalDbStream = context.getAssets().open(DB_NAME);

String outFileName = DB_PATH + DB_NAME;

OutputStream localDbStream = new FileOutputStream(outFileName);

byte[] buffer = new byte[1024];

int bytesRead;

while ((bytesRead = externalDbStream.read(buffer)) > 0) {

localDbStream.write(buffer, 0, bytesRead);

}

localDbStream.close();

externalDbStream.close();

}

public SQLiteDatabase openDataBase() throws SQLException {

String path = DB_PATH + DB_NAME;

if (database == null) {

createDataBase();

database = SQLiteDatabase.openDatabase(path, null,

SQLiteDatabase.OPEN_READWRITE);

}

return database;

}

@Override

public synchronized void close() {

if (database != null) {

database.close();

}

super.close();

}

@Override

public void onCreate(SQLiteDatabase db) {

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){

}

}

package com.lyubov.app.kotobaquiz.preferences;

import android.content.SharedPreferences;

public class PreferencesManager {

private final SharedPreferences mPref;

public PreferencesManager(SharedPreferences pref) {

mPref = pref;

}

public void savePreference(String key, int value) {

SharedPreferences.Editor editor = mPref.edit();

editor.putInt(key, value);

editor.apply();

}

public void savePreference(String key, boolean value) {

SharedPreferences.Editor editor = mPref.edit();

editor.putBoolean(key, value);

editor.apply();

}

public int loadPreferences(String key, int defaultValue) {

return mPref.getInt(key, defaultValue);

}

public boolean loadPreferences(String key, boolean defaultValue) {

return mPref.getBoolean(key, defaultValue);

}

public SharedPreferences getPreference() {

return mPref;

}

}

package com.lyubov.app.kotobaquiz.task;

public interface TaskTypes {

int CHARACTER_MEANING = 0;

int GRAMMAR = 1;

int CHOOSE_RIGHT_PARTICLE = 2;

}

package com.lyubov.app.kotobaquiz.task;

class QuestionAndAnswers {

private String mQuestion;

private String mAnswerOne;

private String mAnswerTwo;

private String mAnswerThree;

private String mAnswerFour;

private String mCorrectAnswer;

public QuestionAndAnswers() {

mQuestion = "";

mAnswerOne = "";

mAnswerTwo = "";

mAnswerThree = "";

mAnswerFour = "";

mCorrectAnswer = "";

}

public String getQuestion() {

return mQuestion;

}

public String getAnswerOne() {

return mAnswerOne;

}

public String getAnswerTwo() {

return mAnswerTwo;

}

public String getAnswerThree() {

return mAnswerThree;

}

public String getAnswerFour() {

return mAnswerFour;

}

public String getCorrectAnswer() {

return mCorrectAnswer;

}

public void setQuestion(String question) {

mQuestion = question;

}

public void setAnswerOne(String answerOne) {

mAnswerOne = answerOne;

}

public void setAnswerTwo(String answerTwo) {

mAnswerTwo = answerTwo;

}

public void setAnswerThree(String answerThree) {

mAnswerThree = answerThree;

}

public void setAnswerFour(String answerFour) {

mAnswerFour = answerFour;

}

public void setCorrectAnswer(String correctAnswer) {

mCorrectAnswer = correctAnswer;

}

}

package com.lyubov.app.kotobaquiz.task;

import android.content.Context;

import android.widget.Button;

import android.widget.TextView;

import com.lyubov.app.kotobaquiz.R;

import java.util.ArrayList;

import java.util.Random;

public class QuestionAndAnswersManager {

private final ArrayList<QuestionAndAnswers> mArray;

private int mCorrectAnswerCount;

private int mIncorrectAnswerCount;

private int mNumberOfQuestion;

private int mAnswerAndQuestionNumber;

public QuestionAndAnswersManager(int quantity) {

mArray = new ArrayList<>(quantity);

for (int i = 0;

i < quantity;

i++) {

mArray.add(i, new QuestionAndAnswers());

}

mCorrectAnswerCount = 0;

mIncorrectAnswerCount = 0;

mAnswerAndQuestionNumber = 0;

mNumberOfQuestion = 1;

}

public int getCorrectAnswersCount() {

return mCorrectAnswerCount;

}

public int getIncorrectAnswersCount() {

return mIncorrectAnswerCount;

}

public void setAnswersAndQuestion(TextView question, Button answerOne, Button answerTwo,

Button answerThree, Button answerFour,

TextView numberQuestion, Context context) {

Random rand = new Random();

if (mArray.size() > 0) {

mAnswerAndQuestionNumber = rand.nextInt(mArray.size());

}

question.setText(mArray.get(mAnswerAndQuestionNumber).getQuestion());

answerOne.setText(mArray.get(mAnswerAndQuestionNumber).getAnswerOne());

answerTwo.setText(mArray.get(mAnswerAndQuestionNumber).getAnswerTwo());

answerThree.setText(mArray.get(mAnswerAndQuestionNumber).getAnswerThree());

answerFour.setText(mArray.get(mAnswerAndQuestionNumber).getAnswerFour());

numberQuestion.setText(context.getResources().getString(R.string.question_number) +

String.valueOf(mNumberOfQuestion));

}

public boolean isCorrect(Button currentButton) {

mNumberOfQuestion++;

if (mArray.get(mAnswerAndQuestionNumber).getCorrectAnswer().

equals(currentButton.getText())) {

mCorrectAnswerCount++;

return true;

} else {

mIncorrectAnswerCount++;

return false;

}

}

public void removeChosenAnswerAndQuestion() {

mArray.remove(mAnswerAndQuestionNumber);

}

public ArrayList<QuestionAndAnswers> getArrayAnswersAndQuestions(){

return mArray;

}

}

package com.lyubov.app.kotobaquiz.task;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import com.lyubov.app.kotobaquiz.R;

import com.lyubov.app.kotobaquiz.database.ExternalDbOpenHelper;

import java.util.ArrayList;

import java.util.HashSet;

import java.util.Iterator;

import java.util.Random;

public class TaskLoader implements TaskTypes {

private static final String TASK_TABLE_ONE = "task_char_trans";

private static final String TASK_TABLE_TWO = "task_gram";

private static final String TASK_TABLE_THREE = "task_choose_particle";

private static final String TASK_ID = "_id";

private static final String TASK = "task";

private static final String ANSWER_ONE = "answer_one";

private static final String ANSWER_TWO = "answer_two";

private static final String ANSWER_THREE = "answer_three";

private static final String ANSWER_FOUR = "answer_four";

private static final String CORRECT_ANSWER = "correct_answer";

private static final String DB_NAME = "taskdatabase";

private static final String TABLE_RESULT_CHARACTER_MEANING = "result_character_meaning";

private static final String TABLE_RESULT_CHARACTER_READING = "result_gram";

private static final String TABLE_RESULT_CHOOSE_PARTICLE = "result_choose_particle";

private static final String RESULT_CORRECT_ANSWER = "correct_answer";

private static final String RESULT_INCORRECT_ANSWER = "incorrect_answer";

private static final String RESULT_TOTAL_RATE = "total_rate";

private static final int NUMBER_OF_ANSWERS = 4;

private static SQLiteDatabase sDataBase;

private int mQuestionsAndAnswersCountForTask;

private Cursor cursor;

public void connectAndOpenDataBase(Context context) {

ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper(context, DB_NAME);

try {

sDataBase = dbOpenHelper.openDataBase();

} catch (SQLException ex) {

ex.printStackTrace();

}

}

public void executeData(ArrayList<QuestionAndAnswers> arrayQuestionAndAnswers) {

HashSet<Integer> randSet = new HashSet<>(mQuestionsAndAnswersCountForTask);

Random randNum = new Random();

while (randSet.size() < mQuestionsAndAnswersCountForTask) {

randSet.add(randNum.nextInt(cursor.getCount()));

}

ArrayList<String> cursorColumns = new ArrayList<>(4);

cursorColumns.add(ANSWER_ONE);

cursorColumns.add(ANSWER_TWO);

cursorColumns.add(ANSWER_THREE);

cursorColumns.add(ANSWER_FOUR);

Integer[] columnOfAnswer;

Iterator setIterator = randSet.iterator();

for (int i = 0;

i < arrayQuestionAndAnswers.size();

i++) {

cursor.moveToPosition((int) setIterator.next());

columnOfAnswer = randomLoadingAnswers();

arrayQuestionAndAnswers.get(i).

setQuestion(cursor.getString(cursor.getColumnIndex(TASK)));

arrayQuestionAndAnswers.get(i).

setAnswerOne(cursor.getString(cursor.getColumnIndex(cursorColumns.

get(columnOfAnswer[0]))));

arrayQuestionAndAnswers.get(i).

setAnswerTwo(cursor.getString(cursor.getColumnIndex(cursorColumns.

get(columnOfAnswer[1]))));

arrayQuestionAndAnswers.get(i).

setAnswerThree(cursor.getString(cursor.getColumnIndex(cursorColumns.

get(columnOfAnswer[2]))));

arrayQuestionAndAnswers.get(i).

setAnswerFour(cursor.getString(cursor.getColumnIndex(cursorColumns.

get(columnOfAnswer[3]))));

arrayQuestionAndAnswers.get(i).

setCorrectAnswer(cursor.getString(cursor.getColumnIndex(CORRECT_ANSWER)));

}

cursor.close();

}

public void setCursorForTaskLoad(String tableName) {

cursor = sDataBase.query(tableName,

new String[]{TASK, ANSWER_ONE, ANSWER_TWO, ANSWER_THREE, ANSWER_FOUR,

CORRECT_ANSWER}, null, null, null, null, null);

}

public void setQuestionsAnswersCountForTask() {

mQuestionsAndAnswersCountForTask = cursor.getCount() / 2;

}

public int getQuestionsAnswersCountForTask() {

return mQuestionsAndAnswersCountForTask;

}

public void closeDatabase() {

if (sDataBase != null) {

sDataBase.close();

}

}

public String getTableFromNumber(int number) {

switch (number) {

case CHARACTER_MEANING:

return TASK_TABLE_ONE;

case GRAMMAR:

return TASK_TABLE_TWO;

case CHOOSE_RIGHT_PARTICLE:

return TASK_TABLE_THREE;

default:

return null;

}

}

private Integer[] randomLoadingAnswers() {

ArrayList<Integer> randomizeArray = new ArrayList<>(NUMBER_OF_ANSWERS);

for (int i = 0;

i < NUMBER_OF_ANSWERS;

i++) {

randomizeArray.add(i);

}

Random rand = new Random();

int randomNumber;

ArrayList<Integer> bufferRandomizeArray = new ArrayList<>(randomizeArray.size());

for (int i = 0;

i < NUMBER_OF_ANSWERS;

i++) {

randomNumber = rand.nextInt(randomizeArray.size());

bufferRandomizeArray.add(i, randomizeArray.get(randomNumber));

randomizeArray.remove(randomNumber);

}

for (int i = 0;

i < NUMBER_OF_ANSWERS;

i++) {

randomNumber = rand.nextInt(bufferRandomizeArray.size());

randomizeArray.add(i, bufferRandomizeArray.get(randomNumber));

bufferRandomizeArray.remove(randomNumber);

}

return randomizeArray.toArray(new Integer[randomizeArray.size()]);

}

public String getResultTableFromNumberOfTask(int number) {

switch (number) {

case CHARACTER_MEANING:

return TABLE_RESULT_CHARACTER_MEANING;

case GRAMMAR:

return TABLE_RESULT_CHARACTER_READING;

case CHOOSE_RIGHT_PARTICLE:

return TABLE_RESULT_CHOOSE_PARTICLE;

default:

return null;

}

}

public String getResultTableForTaskOne() {

return TABLE_RESULT_CHARACTER_MEANING;

}

public String getResultTableForTaskTwo() {

return TABLE_RESULT_CHARACTER_READING;

}

public String getResultTableForTaskThree() {

return TABLE_RESULT_CHOOSE_PARTICLE;

}

public void saveResults(int correctAnswersCount, int incorrectAnswersCount, String tableName, String rate) {

ContentValues cv = new ContentValues();

cv.put(TASK_ID, 1);

cv.put(RESULT_CORRECT_ANSWER, correctAnswersCount);

cv.put(RESULT_INCORRECT_ANSWER, incorrectAnswersCount);

cv.put(RESULT_TOTAL_RATE, rate);

sDataBase.replace(tableName, null, cv);

closeDatabase();

}

public String getStatistics(String statisticTable, Context context) {

Cursor cursor = sDataBase.query(statisticTable,

new String[]{RESULT_CORRECT_ANSWER, RESULT_INCORRECT_ANSWER, RESULT_TOTAL_RATE},

null, null, null, null, null);

if (cursor.moveToFirst()) {

int correctAnswersCount = cursor.getInt(cursor.getColumnIndex(RESULT_CORRECT_ANSWER));

int incorrectAnswerCount = cursor.getInt(cursor.getColumnIndex(RESULT_INCORRECT_ANSWER));

String totalRate = cursor.getString(cursor.getColumnIndex(RESULT_TOTAL_RATE));

cursor.close();

return String.valueOf(context.getResources().

getString(R.string.correct_answers_text) + " " + correctAnswersCount + "rn" +

context.getResources().getString(R.string.incorrect_answers_text) + " " +

incorrectAnswerCount + "rn" + context.getResources().getString(R.string.rate) +

" " + totalRate);

} else {

return context.getResources().getString(R.string.no_data);

}

}

}

package com.lyubov.app.kotobaquiz.ui;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.util.TypedValue;

import android.view.View;

import android.widget.Button;

import android.widget.RelativeLayout;

import android.widget.TextView;

import com.lyubov.app.kotobaquiz.R;

import com.lyubov.app.kotobaquiz.task.TaskTypes;

import com.lyubov.app.kotobaquiz.customization.BackgroundManager;

import com.lyubov.app.kotobaquiz.customization.SoundManager;

import com.lyubov.app.kotobaquiz.task.QuestionAndAnswersManager;

import com.lyubov.app.kotobaquiz.task.TaskLoader;

public class GameActivity extends Activity implements View.OnClickListener, TaskTypes {

private TaskLoader mTaskLoader;

private Button mBtnAnswerOne;

private Button mBtnAnswerTwo;

private Button mBtnAnswerThree;

private Button mBtnAnswerFour;

private TextView mTextTask;

private TextView mNumberQuestion;

private TextView mAnswerStatus;

private QuestionAndAnswersManager mArrayQuestionsAndAnswers;

private Handler mAnswerStatusHandler;

private int mNumberOfLesson;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.game_layout);

init();

loadData();

mArrayQuestionsAndAnswers.setAnswersAndQuestion(mTextTask, mBtnAnswerOne,

mBtnAnswerTwo, mBtnAnswerThree, mBtnAnswerFour, mNumberQuestion, getBaseContext());

}

private void init() {

mTaskLoader = new TaskLoader();

mBtnAnswerOne = (Button) findViewById(R.id.answer_one);

mBtnAnswerTwo = (Button) findViewById(R.id.answer_two);

mBtnAnswerThree = (Button) findViewById(R.id.answer_three);

mBtnAnswerFour = (Button) findViewById(R.id.answer_four);

mTextTask = (TextView) findViewById(R.id.game_text_task);

mNumberQuestion = (TextView) findViewById(R.id.title_number_of_question);

mAnswerStatus = (TextView) findViewById(R.id.answer_status);

RelativeLayout game = (RelativeLayout) findViewById(R.id.game_background);

BackgroundManager.getInstance().setTheme(game);

mAnswerStatusHandler = new Handler();

mBtnAnswerOne.setOnClickListener(this);

mBtnAnswerTwo.setOnClickListener(this);

mBtnAnswerThree.setOnClickListener(this);

mBtnAnswerFour.setOnClickListener(this);

}

private Runnable mStatusAnswerRunnable = new Runnable() {

@Override

public void run() {

mAnswerStatus.setVisibility(View.INVISIBLE);

}

};

@Override

public void onClick(View v) {

if (SoundManager.getInstance().getState()) {

SoundManager.getInstance().playSoundClick(getBaseContext());

}

switch (v.getId()) {

case R.id.answer_one:

answerAQuestion(mBtnAnswerOne);

break;

case R.id.answer_two:

answerAQuestion(mBtnAnswerTwo);

break;

case R.id.answer_three:

answerAQuestion(mBtnAnswerThree);

break;

case R.id.answer_four:

answerAQuestion(mBtnAnswerFour);

break;

default:

break;

}

}

private void answerAQuestion(Button answerButton) {

setAnswerStatus(mArrayQuestionsAndAnswers.isCorrect(answerButton));

mArrayQuestionsAndAnswers.removeChosenAnswerAndQuestion();

if (!tryFinishTaskAndShowResult()) {

mArrayQuestionsAndAnswers.setAnswersAndQuestion(mTextTask, mBtnAnswerOne,

mBtnAnswerTwo, mBtnAnswerThree, mBtnAnswerFour, mNumberQuestion, getBaseContext());

}

}

private void loadData() {

(SelectTypeLessonActivity) тип выбраного урока

mNumberOfLesson = getIntent().getIntExtra("SEL_TASK", 0);

switch (mNumberOfLesson){

case GRAMMAR:

case CHOOSE_RIGHT_PARTICLE:

mTextTask.setTextSize(TypedValue.COMPLEX_UNIT_PX,

getResources().getDimension(R.dimen.text_small));

break;

}

mTaskLoader.connectAndOpenDataBase(this);

mTaskLoader.setCursorForTaskLoad(mTaskLoader.getTableFromNumber(mNumberOfLesson));

mTaskLoader.setQuestionsAnswersCountForTask();

mArrayQuestionsAndAnswers =

new QuestionAndAnswersManager(mTaskLoader.getQuestionsAnswersCountForTask());

mTaskLoader.executeData(mArrayQuestionsAndAnswers.getArrayAnswersAndQuestions());

mTaskLoader.closeDatabase();

}

private void setAnswerStatus(boolean status) {

if (status) {

setCorrect();

} else {

setIncorrect();

}

updateAnswerStatusVisibleTimer();

}

private void setIncorrect() {

mAnswerStatus.setText(R.string.incorrect);

mAnswerStatus.setTextColor(getResources().

getColor(R.color.status_answer_incorrect_text_color));

mAnswerStatus.setBackgroundColor(getResources().

getColor(R.color.status_answer_incorrect_color));

}

private void setCorrect() {

mAnswerStatus.setText(R.string.correct);

mAnswerStatus.setTextColor(getResources().

getColor(R.color.status_answer_correct_text_color));

mAnswerStatus.

setBackgroundColor(getResources().getColor(R.color.status_answer_correct_color));

}

private void updateAnswerStatusVisibleTimer() {

mAnswerStatus.setVisibility(View.VISIBLE);

mAnswerStatusHandler.removeCallbacks(mStatusAnswerRunnable);

mAnswerStatusHandler.postDelayed(mStatusAnswerRunnable, 500);

}

private boolean tryFinishTaskAndShowResult() {

if (mArrayQuestionsAndAnswers.getArrayAnswersAndQuestions().isEmpty()) {

showResults();

exit();

return true;

}

return false;

}

private void showResults() {

Intent mResultsIntent = new Intent(GameActivity.this, ResultActivity.class);

mResultsIntent.putExtra("CORRECT_ANSWER_COUNT", mArrayQuestionsAndAnswers.getCorrectAnswersCount());

mResultsIntent.putExtra("INCORRECT_ANSWER_COUNT",

mArrayQuestionsAndAnswers.getIncorrectAnswersCount());

mResultsIntent.putExtra("RESULTS_TABLE_NAME_FOR_THIS_TASK", mNumberOfLesson);

startActivity(mResultsIntent);

}

private void exit() {

mBtnAnswerOne.setOnClickListener(null);

mBtnAnswerTwo.setOnClickListener(null);

mBtnAnswerThree.setOnClickListener(null);

mBtnAnswerFour.setOnClickListener(null);

mAnswerStatusHandler.removeCallbacksAndMessages(null);

mStatusAnswerRunnable = null;

mTaskLoader = null;

mArrayQuestionsAndAnswers = null;

finish();

}

@Override

public void onBackPressed() {

super.onBackPressed();

Intent mSelectLessonIntent = new Intent(GameActivity.this, SelectTypeLessonActivity.class);

startActivity(mSelectLessonIntent);

exit();

}

}

package com.lyubov.app.kotobaquiz.ui;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.RelativeLayout;

import com.lyubov.app.kotobaquiz.R;

import com.lyubov.app.kotobaquiz.customization.BackgroundManager;

import com.lyubov.app.kotobaquiz.customization.SoundManager;

public class MainActivity extends Activity implements View.OnClickListener {

private RelativeLayout mMain;

private Button mSettingsButton;

private Button mGameButton;

private Button mAboutButton;

private Button mExitButton;

private Button mStatisticButton;

private boolean mIsThemeChanged;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main_menu_layout);

init();

}

private void init() {

BackgroundManager.getInstance().init(getBaseContext());

SoundManager.getInstance().init(getBaseContext());

SoundManager.getInstance().loadState();

mSettingsButton = (Button) findViewById(R.id.settings_button);

mGameButton = (Button) findViewById(R.id.game_button);

mAboutButton = (Button) findViewById(R.id.about_button);

mExitButton = (Button) findViewById(R.id.exit_button);

mStatisticButton = (Button) findViewById(R.id.statistic_button);

mMain = (RelativeLayout) findViewById(R.id.main_background);

mSettingsButton.setOnClickListener(this);

mGameButton.setOnClickListener(this);

mAboutButton.setOnClickListener(this);

mExitButton.setOnClickListener(this);

mStatisticButton.setOnClickListener(this);

BackgroundManager.getInstance().setTheme(mMain);

}

@Override

public void onClick(View view) {

if (SoundManager.getInstance().getState()) {

SoundManager.getInstance().playSoundClick(getBaseContext());

}

switch (view.getId()) {

case R.id.settings_button:

goToSettingActivity();

break;

case R.id.game_button:

goToSelectLessonActivity();

break;

case R.id.about_button:

showAbout();

break;

case R.id.exit_button:

exit();

break;

case R.id.statistic_button:

goToStatisticsActivity();

break;

default:

break;

}

}

private void goToSelectLessonActivity() {

Intent gameIntent = new Intent(MainActivity.this, SelectTypeLessonActivity.class);

startActivity(gameIntent);

}

private void goToStatisticsActivity() {

Intent statisticIntent = new Intent(MainActivity.this, StatisticsActivity.class);

startActivity(statisticIntent);

}

private void goToSettingActivity() {

Intent settingsIntent = new Intent(MainActivity.this, SettingsActivity.class);

startActivityForResult(settingsIntent, 1);

}

private void showAbout() {

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

builder.setTitle(R.string.about_game_title)

.setMessage(R.string.about_game_info)

.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialogInterface, int i) {

dialogInterface.dismiss();

}

});

AlertDialog aboutDialog = builder.create();

aboutDialog.show();

}

private void exit() {

mAboutButton.setOnClickListener(null);

mExitButton.setOnClickListener(null);

mGameButton.setOnClickListener(null);

mSettingsButton.setOnClickListener(null);

mStatisticButton.setOnClickListener(null);

SoundManager.getInstance().deleteManager();

BackgroundManager.getInstance().deleteManager();

android.os.Process.killProcess(android.os.Process.myPid());

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (data == null) {

return;

}

mIsThemeChanged = data.getBooleanExtra("SETTINGS_THEME", false);

}

@Override

public void onBackPressed() {

super.onBackPressed();

exit();

}

@Override

protected void onResume() {

super.onResume();

if (mIsThemeChanged) {

BackgroundManager.getInstance().setTheme(mMain);

}

}

}

package com.lyubov.app.kotobaquiz.ui;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.RelativeLayout;

import android.widget.TextView;

import com.lyubov.app.kotobaquiz.R;

import com.lyubov.app.kotobaquiz.customization.BackgroundManager;

import com.lyubov.app.kotobaquiz.customization.SoundManager;

import com.lyubov.app.kotobaquiz.task.TaskLoader;

public class ResultActivity extends Activity {

private int mCorrectAnswersCount;

private int mIncorrectAnswersCount;

private Button mOkButton;

private TextView mTextRate;

private int mTaskType;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.result_layout);

init();

}

private void init() {

mOkButton = (Button) findViewById(R.id.button_results_ok);

TextView resultView = (TextView) findViewById(R.id.text_results);

mTextRate = (TextView) findViewById(R.id.text_rate);

RelativeLayout result = (RelativeLayout) findViewById(R.id.result_background);

BackgroundManager.getInstance().setTheme(result);

setDataFromIntents();

calculateRate();

resultView.setText(getResources().getString(R.string.correct_answers_text) + " " +

String.valueOf(mCorrectAnswersCount) + "rn" +

getResources().getString(R.string.incorrect_answers_text) + " "

+ String.valueOf(mIncorrectAnswersCount));

mOkButton.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

if (SoundManager.getInstance().getState()) {

SoundManager.getInstance().playSoundClick(getBaseContext());

}

saveResults(mCorrectAnswersCount, mIncorrectAnswersCount, mTaskType,

mTextRate.getText().toString());

exit();

}

});

}

private void calculateRate() {

if (mCorrectAnswersCount <= 5) {

setRate(R.drawable.bad_rate, getResources().getString(R.string.bad));

} else if (mCorrectAnswersCount <= 10) {

setRate(R.drawable.normal_rate, getResources().getString(R.string.not_bad));

} else {

setRate(R.drawable.good_rate, getResources().getString(R.string.good));

}

}

private void saveResults(int correctAnswersCount, int incorrectAnswersCount, int tableTask, String rate) {

TaskLoader tLoader = new TaskLoader();

String tableName = tLoader.getResultTableFromNumberOfTask(tableTask);

tLoader.connectAndOpenDataBase(getBaseContext());

tLoader.saveResults(correctAnswersCount, incorrectAnswersCount, tableName, rate);

}

private void setRate(int drawable, String totalTextRate) {

ImageView mGraphicalRate = (ImageView) findViewById(R.id.graphical_rating);

mGraphicalRate.setImageResource(drawable);

mTextRate.setText(totalTextRate);

}

private void setDataFromIntents() {

mCorrectAnswersCount = getIntent().getIntExtra("CORRECT_ANSWER_COUNT", 0);

mIncorrectAnswersCount = getIntent().getIntExtra("INCORRECT_ANSWER_COUNT", 0);

mTaskType = getIntent().getIntExtra("RESULTS_TABLE_NAME_FOR_THIS_TASK", 0);

}

private void exit() {

mOkButton.setOnClickListener(null);

Intent mSelectLessonIntent =

new Intent(ResultActivity.this, SelectTypeLessonActivity.class);

startActivity(mSelectLessonIntent);

finish();

}

@Override

public void onBackPressed() {

super.onBackPressed();

exit();

}

}

package com.lyubov.app.kotobaquiz.ui;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.ListView;

import android.widget.RelativeLayout;

import com.lyubov.app.kotobaquiz.R;

import com.lyubov.app.kotobaquiz.customization.BackgroundManager;

import com.lyubov.app.kotobaquiz.customization.SoundManager;

public class SelectTypeLessonActivity extends Activity {

private Intent mPlayIntent;

private Button mPlayButton;

private Button mBackButton;

private ListView mLessonsList;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.select_lesson_layout);

init();

}

private void init() {

mPlayButton = (Button) findViewById(R.id.play_button);

mBackButton = (Button) findViewById(R.id.back_button);

mLessonsList = (ListView) findViewById(R.id.task_type_list);

RelativeLayout selectType = (RelativeLayout) findViewById(R.id.select_type_background);

mPlayIntent = new Intent(SelectTypeLessonActivity.this, GameActivity.class);

mLessonsList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

if (SoundManager.getInstance().getState()) {

SoundManager.getInstance().playSoundClick(getBaseContext());

}

mPlayIntent.putExtra("SEL_TASK", i);

}

});

mPlayButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (SoundManager.getInstance().getState()) {

SoundManager.getInstance().playSoundClick(getBaseContext());

}

if (mPlayIntent != null) {

startActivity(mPlayIntent);

exit();

}

}

});

mBackButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

exit();

}

);

String[] taskTypeArray = getResources().getStringArray(R.array.task_types);

ArrayAdapter<String> adapter = new ArrayAdapter<>(getBaseContext(),

R.layout.select_lesson_list_view_element_layout, taskTypeArray);

mLessonsList.setAdapter(adapter);

mLessonsList.setItemChecked(0, true);

}

private void exit() {

mPlayButton.setOnClickListener(null);

mBackButton.setOnClickListener(null);

mLessonsList.setOnItemClickListener(null);

mPlayIntent = null;

finish();

} @Override

public void onBackPressed() {

super.onBackPressed();

exit();

}

}

package com.lyubov.app.kotobaquiz.ui;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.CompoundButton;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.RelativeLayout;

import com.lyubov.app.kotobaquiz.R;

import com.lyubov.app.kotobaquiz.customization.BackgroundManager;

import com.lyubov.app.kotobaquiz.customization.SoundManager;

import com.lyubov.app.kotobaquiz.customization.ThemeKeys;

public class SettingsActivity extends Activity implements ThemeKeys {

private RelativeLayout mSettings;

private RadioGroup mThemeGroup;

private RadioButton mOriginalButton;

private RadioButton mDarkButton;

private RadioButton mNeutralButton;

private CheckBox mSound;

private Button mBackButton;

private boolean isLoaded = false;

private boolean mIsThemeChanged;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.settings_layout);

init();

}

private void init() {

mBackButton = (Button) findViewById(R.id.back_button);

mThemeGroup = (RadioGroup) findViewById(R.id.radio_theme);

mOriginalButton = (RadioButton) findViewById(R.id.radio_original);

mDarkButton = (RadioButton) findViewById(R.id.radio_dark);

mNeutralButton = (RadioButton) findViewById(R.id.radio_neutral);

mSettings = (RelativeLayout) findViewById(R.id.settings_background);

mSound = (CheckBox) findViewById(R.id.enable_sound);

loadSoundState();

loadRadioButtonChoise();

mBackButton.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View view) {

if (SoundManager.getInstance().getState()) {

SoundManager.getInstance().playSoundClick(getBaseContext());

}

exit();

}

});

mThemeGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup radioGroup, int checkedLang) {

if (SoundManager.getInstance().getState() && isLoaded) {

SoundManager.getInstance().playSoundClick(getBaseContext());

}

switch (checkedLang) {

case R.id.radio_original:

saveAndSetRadioButtonChoise(ORIGINAL_THEME_KEY);

break;

case R.id.radio_dark:

saveAndSetRadioButtonChoise(DARK_THEME_KEY);

break;

case R.id.radio_neutral:

saveAndSetRadioButtonChoise(NEUTRAL_THEME_KEY);

break;

}

}

});

mSound.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

saveSoundState(isChecked);

if (SoundManager.getInstance().getState() && isLoaded) {

SoundManager.getInstance().playSoundClick(getBaseContext());

}

}

});

isLoaded = true;

}

private void saveSoundState(boolean checked) {

SoundManager.getInstance().saveState(checked);

}

private void loadSoundState() {

mSound.setChecked(SoundManager.getInstance().loadState());

}

private void saveAndSetRadioButtonChoise(int radioButtonId) {

BackgroundManager.getInstance().saveTheme(radioButtonId);

BackgroundManager.getInstance().setTheme(mSettings);

if (!mIsThemeChanged) {

mIsThemeChanged = true;

}

}

private void loadRadioButtonChoise() {

setRadioButtonChoise(BackgroundManager.getInstance().loadTheme());

BackgroundManager.getInstance().setTheme(mSettings);

}

private void setRadioButtonChoise(int radioButtonId) {

switch (radioButtonId) {

case 1:

mOriginalButton.setChecked(true);

break;

case 2:

mDarkButton.setChecked(true);

break;

case 3:

mNeutralButton.setChecked(true);

break;

default:

break;

}

}

private void exit() {

mThemeGroup.setOnCheckedChangeListener(null);

mSound.setOnCheckedChangeListener(null);

mBackButton.setOnClickListener(null);

Intent mainMenuIntent = new Intent();

mainMenuIntent.putExtra("SETTINGS_THEME", mIsThemeChanged);

setResult(1, mainMenuIntent);

finish();

}

@Override

public void onBackPressed() {

super.onBackPressed();

exit();

}

}

package com.lyubov.app.kotobaquiz.ui;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.ListView;

import android.widget.RelativeLayout;

import com.lyubov.app.kotobaquiz.R;

import com.lyubov.app.kotobaquiz.customization.BackgroundManager;

import com.lyubov.app.kotobaquiz.customization.SoundManager;

import com.lyubov.app.kotobaquiz.task.TaskLoader;

public class StatisticsActivity extends Activity {

private Button mBackButton;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.statistics_layout);

init();

}

private void init() {

mBackButton = (Button) findViewById(R.id.statistic_back_button);

RelativeLayout statistics = (RelativeLayout) findViewById(R.id.statistics_background);

BackgroundManager.getInstance().setTheme(statistics);

mBackButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (SoundManager.getInstance().getState()) {

SoundManager.getInstance().playSoundClick(getBaseContext());

}

exit();

}

});

ListView statisticsList = (ListView) findViewById(R.id.statistic_result_view);

ArrayAdapter mAdapter = new ArrayAdapter<>(getBaseContext(),

R.layout.statistics_element_layout, getmStatistics());

statisticsList.setAdapter(mAdapter);

}

private String[] getmStatistics() {

TaskLoader statisticLoader = new TaskLoader();

statisticLoader.connectAndOpenDataBase(getBaseContext());

String taskStatisticOne = statisticLoader.getStatistics(statisticLoader.

getResultTableForTaskOne(), getBaseContext());

String taskStatisticTwo = statisticLoader.getStatistics(statisticLoader.

getResultTableForTaskTwo(), getBaseContext());

String taskStatisticThree = statisticLoader.getStatistics(statisticLoader.

getResultTableForTaskThree(), getBaseContext());

statisticLoader.closeDatabase();

return new String[]{taskStatisticOne, taskStatisticTwo, taskStatisticThree};

}

private void exit() {

mBackButton.setOnClickListener(null);

finish();

}

@Override

public void onBackPressed() {

super.onBackPressed();

exit();

}

}

Приложение 3

Исходный код xml-разметки интерфейса

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android

android:layout_width="match_parent" android:layout_height="match_parent"

style="@style/LayoutStyle"

android:id="@+id/game_background">

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/answer_status"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:textSize="@dimen/text_large"

android:gravity="center_horizontal"

android:visibility="invisible" />

<TextView

android:layout_width="match_parent"

android:layout_height="@dimen/game_text_task_height"

android:id="@+id/game_text_task"

style="@style/GameTextTask"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="false"

android:layout_below="@+id/title_number_of_question"

android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView

android:layout_width="match_parent"

android:id="@+id/title_number_of_question"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="false"

android:src="@drawable/game_question_title"

android:scaleType="fitXY"

style="@style/QuestionNumberStyle" />

<Button

style="@style/GameButtons"

android:id="@+id/answer_one"

android:cropToPadding="false"

android:singleLine="false"

android:layout_below="@+id/game_text_task"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="false"/>

<Button

style="@style/GameButtons"

android:id="@+id/answer_two"

android:singleLine="false"

android:layout_below="@+id/game_text_task"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="false"/>

<Button

style="@style/GameButtons"

android:id="@+id/answer_three"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="false"

android:layout_below="@+id/answer_one" />

<Button

style="@style/GameButtons"

android:id="@+id/answer_four"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="false"

android:layout_below="@+id/answer_two" />

</RelativeLayout>

<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android

xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainMenu"

android:clickable="false"

style="@style/LayoutStyle"

android:id="@+id/main_background">

<ImageView

android:layout_width="match_parent"

android:layout_height="@dimen/title_height"

android:id="@+id/title_image"

android:layout_centerHorizontal="true"

android:src="@drawable/title_main"

android:scaleType="fitCenter" />

<ImageView

android:id="@+id/main_head_divider"

android:layout_below="@+id/title_image"

style="@style/DividerStyle" />

<LinearLayout

android:orientation="vertical"

android:layout_width="@dimen/buttons_layout_main_width"

android:layout_height="@dimen/buttons_layout_main_height"

android:layout_centerVertical="true"

android:layout_centerHorizontal="true"

android:gravity="center_horizontal"

android:id="@+id/button_layout"

android:layout_below="@+id/main_head_divider"

android:layout_marginTop="@dimen/elements_divider_margin_top">

<Button

android:layout_width="match_parent"

android:id="@+id/game_button"

style="@style/MainMenuButtonsStyle"

android:text="@string/start" />

<View

android:layout_height="@dimen/divider_height"

android:layout_width="match_parent"

android:id="@+id/customview1" />

<Button

android:layout_width="match_parent"

android:text="@string/statistic"

android:id="@+id/statistic_button"

style="@style/MainMenuButtonsStyle" />

<View

android:layout_height="@dimen/divider_height"

android:layout_width="match_parent"

android:id="@+id/customview4" />

<Button

android:layout_width="match_parent"

android:text="@string/settings"

android:id="@+id/settings_button"

style="@style/MainMenuButtonsStyle" />

<View

android:layout_height="@dimen/divider_height"

android:layout_width="match_parent"

android:id="@+id/customview2"

android:focusableInTouchMode="false" />

<Button

android:layout_width="match_parent"

android:text="@string/about"

android:id="@+id/about_button"

style="@style/MainMenuButtonsStyle" />

<View

android:layout_height="@dimen/divider_height"

android:layout_width="match_parent"

android:id="@+id/customview3"

android:focusableInTouchMode="false" />

<Button

android:layout_width="match_parent"

android:text="@string/exit"

android:id="@+id/exit_button"

style="@style/MainMenuButtonsStyle" />

</LinearLayout>

<RelativeLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_below="@+id/button_layout"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true"

android:id="@+id/main_menu_picture">

<ImageView

android:layout_width="@dimen/pictures_width"

android:layout_height="@dimen/pictures_height"

android:id="@+id/cat_picture"

android:src="@drawable/main_menu_picture_cat"

android:layout_alignParentLeft="true"

android:layout_alignParentBottom="true" />

<ImageView

android:layout_width="@dimen/pictures_width"

android:layout_height="@dimen/pictures_height"

android:id="@+id/character_picture"

android:src="@drawable/main_menu_picture_character"

android:layout_alignParentEnd="true"

android:layout_alignParentBottom="true"

android:layout_alignParentRight="true" />

</RelativeLayout>

</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android

android:layout_width="match_parent" android:layout_height="match_parent"

style="@style/LayoutStyle"

android:id="@+id/result_background">

<TextView

android:layout_width="match_parent"

android:textAppearance="?android:attr/textAppearanceMedium"

android:id="@+id/text_results"

style="@style/ResultViewStyle"

android:layout_below="@+id/results_head_divider"

android:layout_marginTop="@dimen/elements_divider_margin_top" />

<ImageView

android:layout_width="match_parent"

android:layout_height="@dimen/title_height"

android:id="@+id/title_results"

android:src="@drawable/result_head"

android:layout_centerHorizontal="true"

android:scaleType="fitCenter" />

<ImageView

style="@style/DividerStyle"

android:id="@+id/results_head_divider"

android:layout_below="@+id/title_results" />

<LinearLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/rate"

android:layout_below="@+id/text_results"

android:layout_centerHorizontal="true"

android:gravity="center"

android:background="@drawable/game_border">

<ImageView

android:layout_width="@dimen/graphical_rate_width"

android:layout_height="@dimen/graphical_rate_height"

android:id="@+id/graphical_rating"

android:layout_marginTop="@dimen/results_rate_margin" />

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/text_rate"

android:gravity="center_horizontal"

android:textSize="@dimen/text_medium"

android:textColor="@color/result_rate_text_color"

android:paddingRight="@dimen/text_rate_padding_left"

android:paddingLeft="@dimen/text_rate_padding_left"

android:layout_marginBottom="@dimen/results_rate_margin" />

</LinearLayout>

<Button

android:layout_width="@dimen/buttons_width"

android:layout_height="@dimen/button_height"

android:text="@string/ok"

android:id="@+id/button_results_ok"

style="@style/MainMenuButtonsStyle"

android:layout_centerHorizontal="true"

android:layout_below="@+id/rate"

android:layout_marginTop="@dimen/button_result_ok_margin_top" />

</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android

android:layout_width="match_parent" android:layout_height="match_parent"

style="@style/LayoutStyle"

android:id="@+id/select_type_background">

<ImageView

android:layout_width="match_parent"

android:layout_height="@dimen/title_height"

android:id="@+id/title_select_ex"

android:src="@drawable/select_exercise_head"

android:layout_centerHorizontal="true" />

<ImageView

android:id="@+id/select_lesson_head_divider"

style="@style/DividerStyle"

android:layout_below="@+id/title_select_ex" />

<ListView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/task_type_list"

android:layout_below="@+id/select_lesson_head_divider"

android:background="@drawable/select_lesson_border"

android:padding="@dimen/list_view_padding"

android:choiceMode="singleChoice"

android:layout_marginTop="@dimen/elements_divider_margin_top" />

<ImageView

android:layout_width="@dimen/geisha_pic_width"

android:layout_height="@dimen/geisha_pic_height"

android:id="@+id/geisha_pic"

android:src="@drawable/picture_geisha_select_layout"

android:layout_centerInParent="true"

android:layout_marginTop="@dimen/geisha_pic_margin_top"

android:layout_below="@+id/task_type_list" />

<Button

android:layout_width="@dimen/buttons_width"

android:layout_height="@dimen/button_height"

android:text="@string/play"

android:id="@+id/play_button"

android:layout_below="@+id/geisha_pic"

android:layout_centerHorizontal="true"

android:layout_marginTop="@dimen/geisha_pic_margin_top"

style="@style/MainMenuButtonsStyle" />

<Button

android:layout_width="@dimen/buttons_width"

android:layout_height="@dimen/button_height"

android:text="@string/back"

android:id="@+id/back_button"

style="@style/MainMenuButtonsStyle"

android:layout_below="@+id/play_button"

android:layout_marginTop="@dimen/geisha_pic_margin_top"

android:layout_centerHorizontal="true" />

</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>

<CheckedTextView xmlns:android=http://schemas.android.com/apk/res/android

android:id="@android:id/text1"

android:layout_width="match_parent"

android:layout_height="match_parent"

style="@style/TaskTypeRadioButtonStyle"

android:checkMark="?android:attr/listChoiceIndicatorSingle"

android:padding="@dimen/list_view_padding" />

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android

android:layout_width="match_parent" android:layout_height="match_parent"

style="@style/LayoutStyle"

android:id="@+id/settings_background">

<ImageView

android:layout_width="match_parent"

android:layout_height="@dimen/title_height"

android:id="@+id/settings_title"

android:src="@drawable/title_settings"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:scaleType="fitCenter" />

<ImageView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/divider_one"

android:src="@drawable/divider"

android:layout_marginTop="@dimen/divider_margin_top"

android:layout_below="@+id/radio_theme" />

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/choose_lang"

android:id="@+id/choose_lang_text_view"


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.