初学安卓——权威指南挑第二版挑战练习
来源:互联网 发布:淘宝订单交易风险违规 编辑:程序博客网 时间:2024/05/29 18:30
1.用户作弊后,可以旋转CheatActivity来清除作弊痕迹。
2.作弊返回后,用户可以旋转QuizActivity来消除mIsCheater变量值。
偷个懒(1和2在资源文件中设置屏幕为横屏,不可旋转)
<activity android:name=".CheatActivity" android:screenOrientation="portrait"></activity>3.用户可以不断单击NEXT按钮,跳到偷看过答案的问题,从而使作弊记录丢失。
public class Question { private String mQuestion; private boolean mAnswerIsTrue; public Question(String question, boolean answerIsTrue) { mQuestion = question; mAnswerIsTrue = answerIsTrue; } public String getQuestion() { return mQuestion; } public void setQuestion(String question) { mQuestion = question; } public boolean isAnswerIsTrue() { return mAnswerIsTrue; } public void setAnswerIsTrue(boolean answerIsTrue) { mAnswerIsTrue = answerIsTrue; }}
QuestionActivity.XML
<?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_question" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context="yujun.booklearning.QuestionActivity"> <TextView android:id="@+id/question_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:orientation="horizontal"> <Button android:id="@+id/true_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TRUE"/> <Button android:id="@+id/false_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="false"/> </LinearLayout> <Button android:id="@+id/cheat_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:text="CHEAT!"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/last_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="previous"/> <Button android:id="@+id/next_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="next"/> </LinearLayout></LinearLayout>
QuestionActivity
public class QuestionActivity extends AppCompatActivity { @BindView(R.id.question_textview) TextView mQuestionTextview; @BindView(R.id.true_button) Button mTrueButton; @BindView(R.id.false_button) Button mFalseButton; @BindView(R.id.cheat_button) Button mCheatButton; @BindView(R.id.last_button) Button mLastButton; @BindView(R.id.next_button) Button mNextButton; private Question[] mQuestions = new Question[]{ new Question("it is the first!!!", true), new Question("it is the second!!!", false), new Question("it is the third!!!", true), new Question("it is the four!!!", true), new Question("it is the five!!!", false), new Question("it is the six!!!", false), new Question("it is the seven!!!", true), }; private int mCurrent;//问题索引 private boolean mIsAnswerTrue;//问题答案是否正确 private boolean mIsCheat;//是否看过答案 private int mCLickID;//看过答案的ID private List<Integer> mIntegerList = new ArrayList<>();//保存看过答案的ID private static final String EXTRA_ANSWER = "ANSWER"; private static final String EXTRA_SHOW_ANSWER = "SHOW_ANSWER"; private static final String EXTRA_QUESTION_ID = "ID"; private static final String EXTRA_CLICK_ID = "CLICK_ID"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_question); ButterKnife.bind(this); updateQuestion(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != Activity.RESULT_OK) { return; } if (requestCode == 0) { if (data == null) { return; } mIsCheat = data.getBooleanExtra(EXTRA_SHOW_ANSWER, false); mCLickID = data.getIntExtra(EXTRA_CLICK_ID, 0); if ((Integer) mCLickID != null) { mIntegerList.add(mCLickID); } } } private void checkAnswer(boolean userPressed) { setAnswerIsTrue(); String message; if (mIsCheat || mIntegerList.contains(mCurrent)) { message = "作弊不好"; } else { if (userPressed == mIsAnswerTrue) { message = "答对了"; } else { message = "答错了"; } } Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } private void setAnswerIsTrue() { mIsAnswerTrue = mQuestions[mCurrent].isAnswerIsTrue(); } private void previousQuetion() { mIsCheat = false; if (mCurrent > 0) { mCurrent = (mCurrent - 1) % mQuestions.length; } else { mCurrent = mQuestions.length - 1; } } private void nextQuetion() { mIsCheat = false; mCurrent = (mCurrent + 1) % mQuestions.length; } private void updateQuestion() { String question = mQuestions[mCurrent].getQuestion(); mQuestionTextview.setText(question); } private void openActivity() { Intent intent = new Intent(QuestionActivity.this, CheatActivity.class); intent.putExtra(EXTRA_ANSWER, mIsAnswerTrue); intent.putExtra(EXTRA_QUESTION_ID, mCurrent); startActivityForResult(intent, 0); } @OnClick({R.id.question_textview, R.id.true_button, R.id.false_button, R.id.cheat_button, R.id.last_button, R.id.next_button}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.question_textview: nextQuetion(); updateQuestion(); break; case R.id.true_button: checkAnswer(true); break; case R.id.false_button: checkAnswer(false); break; case R.id.cheat_button: setAnswerIsTrue(); openActivity(); break; case R.id.last_button: previousQuetion(); updateQuestion(); break; case R.id.next_button: nextQuetion(); updateQuestion(); break; } }}
CheatActivity.XML
<?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_cheat" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context="yujun.booklearning.CheatActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:text="do you want to do this?"/> <TextView android:id="@+id/answer_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:text="answer"/> <Button android:id="@+id/show_answer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="SHOW ANSWER"/></LinearLayout>
CheatActivity
public class CheatActivity extends AppCompatActivity { private static final String EXTRA_ANSWER = "ANSWER"; private static final String EXTRA_SHOW_ANSWER = "SHOW_ANSWER"; private static final String EXTRA_QUESTION_ID = "ID"; private static final String EXTRA_CLICK_ID = "CLICK_ID"; @BindView(R.id.answer_textview) TextView mAnswerTextview; @BindView(R.id.show_answer) Button mShowAnswer; private boolean mIsAnswerTrue; private int mQuestionID; private int mClickID; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cheat); ButterKnife.bind(this); mIsAnswerTrue = getIntent().getBooleanExtra(EXTRA_ANSWER, false); mQuestionID = getIntent().getIntExtra(EXTRA_QUESTION_ID, 0); } @OnClick(R.id.show_answer) public void onViewClicked() { if (mIsAnswerTrue) { mAnswerTextview.setText("TRUE"); } else { mAnswerTextview.setText("FALSE"); } setAnswerResult(true); mClickID = mQuestionID; } private void setAnswerResult(boolean isTrue) { Intent intent = new Intent(); intent.putExtra(EXTRA_SHOW_ANSWER, isTrue); //看过答案传ID if (isTrue) { intent.putExtra(EXTRA_CLICK_ID, mClickID); } setResult(RESULT_OK, intent); }}
1 0
- 初学安卓——权威指南挑第二版挑战练习
- Android编程权威指南(第二版)— 第10章挑战练习
- Android编程权威指南(第二版)— 第13章挑战练习-13.6
- Android编程权威指南(第二版)— 第13章挑战练习-13.8
- 《Android编程权威指南》第二版 第二章 挑战练习
- 《Android编程权威指南》第二版 第五章 挑战练习
- 《Android编程权威指南》第二版 第六章 挑战练习
- 《Android编程权威指南》第二版 第八章 挑战练习
- 《Android编程权威指南》第二章练习的挑战
- Android编程权威指南:第十二章挑战练习第二个
- 《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习
- 《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习
- Android编程权威指南(第2版)—第2章挑战练习
- Android编程权威指南(第2版)—第6章挑战练习
- Android编程权威指南(第2版)—第5章挑战练习
- Android编程权威指南(第2版)—第8章挑战练习
- Android编程权威指南(第2版)—第10章挑战练习
- Android编程权威指南(第2版)—第13章挑战练习
- 关于属性和字段的初步了解
- C语言头文件
- [译]JavaScript:如何判断值的类型
- Matlab编程 入门(一)
- gitlab配置修改
- 初学安卓——权威指南挑第二版挑战练习
- 【开发工具】dll程序集合并工具之ILMerge
- 剑指offer13:在O(1)时间删除链表结点
- Numpy学习笔记之线性代数
- 文章标题 Til the Cows Come Home
- Til the Cows Come Home(POJ 2387)
- 线程同步的方法有哪些(面试题)
- java-泛型程序设计(一)
- ISE与MATLAB的联合使用