Android开发教程实战案例源码分享-点击五个星评分效果

60 阅读1分钟
Android开发教程实战案例源码分享-点击五个星评分效果

有时用到对app评分功能,会用到五星好评

一、思路:

用5个ImageView,点击第几个进行处理

二、效果图:

在这里插入图片描述

三、关键代码:
class MainActivity : AppCompatActivity() {

    private lateinit var ivChatScoreStart1:ImageView
    private lateinit var ivChatScoreStart2:ImageView
    private lateinit var ivChatScoreStart3:ImageView
    private lateinit var ivChatScoreStart4:ImageView
    private lateinit var ivChatScoreStart5:ImageView
    private lateinit var tvChatScore:TextView


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        ivChatScoreStart1 = findViewById(R.id.iv_chat_score_start1)
        ivChatScoreStart2 = findViewById(R.id.iv_chat_score_start2)
        ivChatScoreStart3 = findViewById(R.id.iv_chat_score_start3)
        ivChatScoreStart4 = findViewById(R.id.iv_chat_score_start4)
        ivChatScoreStart5 = findViewById(R.id.iv_chat_score_start5)
        tvChatScore = findViewById(R.id.tv_chat_score)

        ivChatScoreStart1.setOnClickListener {
            ivChatScoreStart1.isSelected = if (ivChatScoreStart2.isSelected){
                true
            } else {
                !ivChatScoreStart1.isSelected
            }
            if (ivChatScoreStart1.isSelected){
                tvChatScore.setText(R.string.chat_score_start_1)
            } else {
                tvChatScore.setText(R.string.chat_score_no_select_tip2)
            }
            ivChatScoreStart2.isSelected = false
            ivChatScoreStart3.isSelected = false
            ivChatScoreStart4.isSelected = false
            ivChatScoreStart5.isSelected = false
        }
        ivChatScoreStart2.setOnClickListener {
            ivChatScoreStart2.isSelected = if (ivChatScoreStart3.isSelected){
                true
            } else {
                !ivChatScoreStart2.isSelected
            }
            if (ivChatScoreStart2.isSelected){
                ivChatScoreStart1.isSelected = true
                tvChatScore.setText(R.string.chat_score_start_2)
            } else {
                tvChatScore.setText(R.string.chat_score_start_1)
            }
            ivChatScoreStart3.isSelected = false
            ivChatScoreStart4.isSelected = false
            ivChatScoreStart5.isSelected = false
        }
        ivChatScoreStart3.setOnClickListener {
            ivChatScoreStart3.isSelected = if (ivChatScoreStart4.isSelected){
                true
            } else {
                !ivChatScoreStart3.isSelected
            }
            if (ivChatScoreStart3.isSelected){
                ivChatScoreStart1.isSelected = true
                ivChatScoreStart2.isSelected = true
                tvChatScore.setText(R.string.chat_score_start_3)
            } else {
                tvChatScore.setText(R.string.chat_score_start_2)
            }
            ivChatScoreStart4.isSelected = false
            ivChatScoreStart5.isSelected = false
        }
        ivChatScoreStart4.setOnClickListener {

            ivChatScoreStart4.isSelected = if (ivChatScoreStart5.isSelected){
                true
            } else {
                !ivChatScoreStart4.isSelected
            }
            if (ivChatScoreStart4.isSelected){
                ivChatScoreStart1.isSelected = true
                ivChatScoreStart2.isSelected = true
                ivChatScoreStart3.isSelected = true
                tvChatScore.setText(R.string.chat_score_start_4)
            } else {
                tvChatScore.setText(R.string.chat_score_start_3)
            }
            ivChatScoreStart5.isSelected = false
        }
        ivChatScoreStart5.setOnClickListener {
            ivChatScoreStart5.isSelected = !ivChatScoreStart5.isSelected
            if (ivChatScoreStart5.isSelected){
                ivChatScoreStart1.isSelected = true
                ivChatScoreStart2.isSelected = true
                ivChatScoreStart3.isSelected = true
                ivChatScoreStart4.isSelected = true
                tvChatScore.setText(R.string.chat_score_start_5)
            } else {
                tvChatScore.setText(R.string.chat_score_start_4)
            }
        }
    }
}
四、项目demo源码图:

在这里插入图片描述

有问题或者需要完整源码demo的可以看简介联系我,也可以私信我,我每天都看私信的