You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现点击菜单切换图片后自动恢复默认图片?

实现点击菜单切换图片后自动恢复默认的方案

首先在Activity中声明一个CoroutineJob对象,用来管理延迟恢复的任务,避免多次点击时出现冲突:

private var resetImageJob: Job? = null

然后修改onOptionsItemSelected方法,在每个切换图片的分支中加入延迟恢复逻辑(以3秒为例,可自行调整时长):

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    // 先取消之前的延迟任务,防止多次点击后重复触发恢复操作
    resetImageJob?.cancel()
    
    return when (item.itemId) {
        R.id.nav_sair -> {
            val intent = Intent(this, LoginActivity::class.java)
            startActivity(intent)
            finish()
            Toast.makeText(this, "Logue novamente", Toast.LENGTH_LONG).show()
            true
        }

        R.id.nav_sobre -> {
            binding.imvTroca.setImageResource(R.drawable.perfectaprint_quemsomos_full_editado)
            startResetImageTask()
            true
        }

        R.id.nav_impressoras -> {
            binding.imvTroca.setImageResource(R.drawable.imagem_impressoras_edit)
            startResetImageTask()
            true
        }

        R.id.nav_produtos_materiais -> {
            binding.imvTroca.setImageResource(R.drawable.produtos_materiais)
            startResetImageTask()
            true
        }

        R.id.nav_fornecedores -> {
            binding.imvTroca.setImageResource(R.drawable.fornecedores)
            startResetImageTask()
            true
        }

        else -> super.onOptionsItemSelected(item)
    }
}

// 封装延迟恢复默认图片的方法
private fun startResetImageTask() {
    resetImageJob = lifecycleScope.launch {
        // 延迟3秒(3000毫秒),可根据需求修改时长
        delay(3000)
        // 替换为你的默认图片资源ID
        binding.imvTroca.setImageResource(R.drawable.your_default_image)
    }
}

关键说明:

  • 用lifecycleScope启动协程,确保协程跟随Activity生命周期,避免内存泄漏
  • 每次点击菜单时取消之前的任务,防止用户连续点击后多个延迟任务同时执行,造成图片频繁切换
  • 将恢复逻辑封装为单独方法,减少代码重复

内容的提问来源于stack exchange,提问作者Alanpattoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:12:33