Как изменить цвет фона карты в течение 5 секунд и вернуть прежний цвет - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь изменить цвет фона представления карты в течение 5 секунд, когда вы приходите от определенного действия. Это карта переработчика. Но приложение получает сбой. Я попытался обработчик, но не смог избавиться.

 if (intent.hasExtra("post_Id")) {
        postId = intent.getIntExtra("post_Id", 0)

        Handler().postDelayed({
            post_card_view.setBackgroundColor(Color.parseColor("#E1F2F878"))
        }, 1000)
    }

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Вы можете использовать класс CountDownTimer, который будет выполнять обратный отсчет.

Извлечение фрагмента Kotlin :

private const val COUNT_DOWN_TIME = 5secs   
private const val COUNT_DOWN_TIME = 1sec   

 class TimeCounter : CountDownTimer(val COUNT_DOWN_TIME,val COUNT_DOWN_INTERVAL) {

        override fun onFinish() {

          // This method will be called after completion of COUNT_DOWN_TIME
          // Do your work here once the limit of 5secs is completed.

        }


        override fun onTick(timeLeftUntilFinish: Long) {

            //this method is called every COUNT_DOWN_INTERVAL, until the timer is finished
//So if COUNT_DOWN_INTERVAL = 1sec, this method is called every 1sec till the timer is completed.

        }

    }

Вы можете реализовать его в родительском Activity как внутренний класс или можете объявить его независимо в соответствии с вашими потребностями.

Поскольку вы его реализовали, вы полностью ответственны за запуск таймера

Запуск CountDownTimer:

param1: COUNT_DOWN_TIME // время, в течение которого вы хотите вести обратный отсчет

param2: COUNT_DOWN_INTERVAL // время после каждого из которых вы получаете уведомление до обратного отсчета

val mTimer = CountDownTimer(COUNT_DOWN_TIME ,COUNT_DOWN_INTERVAL ) //create Timer Instance
mTimer.start()  //start the timer

Однако, остановка таймера имеет два способа

  1. Счет- истечение обычного времени (вы успешно посчитали в течение 5 секунд)

  2. По некоторым причинам вы самостоятельно отменяете таймер.

Дляотмена CountDownTimer:

mTimer.cancel() // stops Timer as soon as called, irrespective whether count-down was pending.

Примечание: это само собой разумеется, но все же используйте тот же объектt для запуска и остановки таймера.

0 голосов
/ 14 октября 2019

Просто измените свой код на:

Handler().postDelayed({
        post_card_view.setCardBackgroundColor(Color.parseColor("#E1F2F878"))
    }, 1000)
Handler().postDelayed({
        post_card_view.setCardBackgroundColor(previous color)
    }, 6000)

или если вам не нужна задержка для первого изменения, просто:

Handler().post {
        post_card_view.setCardBackgroundColor(Color.parseColor("#E1F2F878"))
    }
Handler().postDelayed({
        post_card_view.setCardBackgroundColor(previous color)
    }, 5000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...