我在一个片段上设置了一个进度条动画(即计时器),每当我访问该片段时,它就会运行。我给予进度条10秒的时间从最大值(即100)减少到最小值(即0)。我的代码只显示了减少的进度条动画,而没有显示减少的数字。
下面是我的代码:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val binding = DataBindingUtil.inflate<FragmentGameBinding>(
inflater, R.layout.fragment_game, container, false)
binding.game = this
timer(binding)
// when user clicks submitButton, it will exit current fragment
binding.submitButton.setOnClickListener{ view: View ->
Log.d("asd","print seconds left when exit the fragment : ") //print here
view.findNavController().navigate(GameFragmentDirections.actionGameFragmentToGameOverFragment())
}
return binding.root
}
private fun timer(binding:FragmentGameBinding){
val mProgressBar = binding.progressBar
val progressAnimator = ObjectAnimator.ofInt(mProgressBar, "progress", 100, 0) //max 100, min 0
progressAnimator.duration = 10000 //10 s = 10000 ms
progressAnimator.interpolator = LinearInterpolator()
progressAnimator.start()
}
但是我想知道当我退出片段时剩下的秒数,而不需要把它放进动画中。例如,如果我退出片段时计时器只剩下4秒,那么它会在日志中打印4。如何做到这一点?
1条答案
按热度按时间brccelvz1#
执行此操作的一种方法是访问
progressBar
对象的progress
属性,并根据该属性计算剩余时间。在您的情况下,它将是:
这导致: