Android编程权威指南(第四版)-第 3 章 activity的生命周期

文章目录

  • 代码:
    • MainActivity
    • Question
    • activity_main.xml
    • activity_main.xml(land)
    • string.xml

代码:

大体是一样的,修改了一些

MainActivity

package com.example.geoquiz

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.TextView
import android.widget.Toast

class MainActivity : AppCompatActivity() {
    private lateinit var questionText: TextView
    private lateinit var ture_button: Button
    private lateinit var false_button: Button
    private lateinit var last_button: Button
    private lateinit var next_button: Button
    private lateinit var score_button: Button
    private val TAG = "MainActivity"
    private var questionList = listOf(
        Question(R.string.question, true),
        Question(R.string.question1, true),
        Question(R.string.question2, true),
        Question(R.string.question3, false),
        Question(R.string.question4, false),
        Question(R.string.question5, false)
    )
    private var index = 0
    private var buttonStatus = true//按钮可以按
    private var score = 0
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        questionText = findViewById(R.id.question)
        ture_button = findViewById(R.id.ture_button)
        false_button = findViewById(R.id.false_button)
        last_button = findViewById(R.id.last_button)
        next_button = findViewById(R.id.next_button)
        next_button = findViewById(R.id.next_button)
        score_button = findViewById(R.id.score_button)
        updateQuestion()
        //点击问题跳转下一题
        questionText.setOnClickListener(View.OnClickListener {
            index = (index + 1) % questionList.size
            updateQuestion()
        })

        ture_button.setOnClickListener(View.OnClickListener {
            buttonStatus = false
            checkAnswer(true)
            closeButton()
        })

        false_button.setOnClickListener(View.OnClickListener {
            buttonStatus = false
            checkAnswer(false)
            closeButton()
        })

        last_button.setOnClickListener(View.OnClickListener {
            openButton()
            if (index == 0) {
                index = questionList.size - 1
                questionText.setText(questionList[index].questionID)
            } else {
                index -= 1
                questionText.setText(questionList[index].questionID)
            }
        })

        next_button.setOnClickListener(View.OnClickListener {
            index = (index + 1) % questionList.size
            updateQuestion()
        })

        score_button.setOnClickListener(View.OnClickListener {
            settlementScore()

        })

    }

    override fun onStart() {
        super.onStart()
        Log.e(TAG, "onStart")
    }

    override fun onResume() {
        super.onResume()
        Log.e(TAG, "onResume")
    }

    override fun onPause() {
        super.onPause()
        Log.e(TAG, "onPause")
    }

    override fun onStop() {
        super.onStop()
        Log.e(TAG, "onStop")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.e(TAG, "onDestroy")
    }

    private fun updateQuestion() {
        openButton()
        var textId = questionList[index].questionID
        questionText.setText(textId)
    }

    private fun checkAnswer(answer: Boolean) {
        var questionanswer = questionList[index].answer
        if (answer == questionanswer) {
            score += 20
            Toast.makeText(this, R.string.ture_toast, Toast.LENGTH_SHORT).show()

        } else {
            Toast.makeText(this, R.string.false_toast, Toast.LENGTH_SHORT).show()

        }

    }

    private fun closeButton() {
        if (!buttonStatus) {
            ture_button.isEnabled = buttonStatus
            false_button.isEnabled = buttonStatus
        }
    }

    private fun openButton() {
        if (!buttonStatus) {
            ture_button.isEnabled = true
            false_button.isEnabled = true
        }
    }

    private fun settlementScore() {
        //答完所有题结算成绩
        if (index == questionList.size - 1) {
            Toast.makeText(this, "得分为$score", Toast.LENGTH_SHORT).show()
            score = 0

        } else {
            Toast.makeText(this, "题目没有答完哦", Toast.LENGTH_SHORT).show()
        }
    }
}

Question

package com.example.geoquiz

import androidx.annotation.StringRes

data class Question(@StringRes val questionID: Int, val answer: Boolean) {
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:gravity="center">

    <TextView
        android:id="@+id/question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"
        android:layout_marginTop="20dp">

    <Button
        android:id="@+id/ture_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ture_button"/>

    <Button
        android:id="@+id/false_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/false_button"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"
        android:layout_marginTop="20dp">

        <Button
            android:id="@+id/last_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/last"
            android:text="@string/last_button"/>

        <Button
            android:id="@+id/next_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableRight="@drawable/next"
            android:text="@string/next_button"/>
    </LinearLayout>
    <Button
        android:id="@+id/score_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/score_button"
        android:layout_marginTop="20dp"/>
</LinearLayout>

activity_main.xml(land)

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:layout_marginTop="20dp">

        <Button
            android:id="@+id/ture_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/ture_button"/>

        <Button
            android:id="@+id/false_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/false_button"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:layout_marginTop="80dp">
        <Button
            android:id="@+id/last_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/last"
            android:text="@string/last_button"/>

        <Button
            android:id="@+id/next_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableRight="@drawable/next"
            android:text="@string/next_button"/>
</LinearLayout>

    <Button
        android:id="@+id/score_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:text="@string/score_button"
        android:layout_marginTop="140dp"/>
</FrameLayout>

string.xml

<resources>
    <string name="app_name">GeoQuiz</string>
    <string name="question">故宫是在北京吗?</string>
    <string name="question1">长城是在北京吗?</string>
    <string name="question2">黄鹤楼是在武汉吗?</string>
    <string name="question3">避暑山庄在武汉吗?</string>
    <string name="question4">月牙泉是在江苏吗?</string>
    <string name="question5">布达拉宫是在新疆吗?</string>
    <string name="ture_button">正确</string>
    <string name="false_button">错误</string>
    <string name="ture_toast">答对了</string>
    <string name="false_toast">答错了</string>
    <string name="next_button">下一题</string>
    <string name="last_button">上一题</string>
</resources>

你可能感兴趣的:(android,gitee)