我想要动画按钮的背景,填补它左到右。我用this 。它正常工作,当我把它放在onCreate,但我需要动画按钮,当用户选择正确的答案在我的格利泽。这是我的checkAnswer方法
fun checkAnswer(selectedAnswer: Button) {
enableAnswersButton(false)
if (selectedAnswer.text.toString() == listOfTests[currentQuestion].rightAnswer){
val layerDrawable = selectedAnswer.background as LayerDrawable
mClipDrawable =
layerDrawable.findDrawableByLayerId(R.id.clip_drawable_false) as ClipDrawable
mAnimator = TimeAnimator()
mAnimator!!.setTimeListener(this)
selectedAnswer.setOnClickListener {
if (!mAnimator!!.isRunning) {
mCurrentLevel = 0;
mAnimator!!.start()
}
}
} else {
val layerDrawable = selectedAnswer.background as LayerDrawable
mClipDrawable =
layerDrawable.findDrawableByLayerId(R.id.clip_drawable_true) as ClipDrawable
mAnimator = TimeAnimator()
mAnimator!!.setTimeListener(this)
selectedAnswer.setOnClickListener {
if (!mAnimator!!.isRunning) {
mCurrentLevel = 0;
mAnimator!!.start()
}
}问题是动画作品时有发生。有时onTimeUpdate方法不调用,动画也不起作用。
override fun onTimeUpdate(animation: TimeAnimator?, totalTime: Long, deltaTime: Long) {
mClipDrawable!!.level = mCurrentLevel
if (mCurrentLevel >= MAX_LEVEL) {
mAnimator!!.cancel()
} else {
mCurrentLevel = min(MAX_LEVEL, mCurrentLevel + LEVEL_INCREMENT)
}
}拜托,帮帮忙
发布于 2020-04-12 21:43:46
我查过this了!那里的实现很好,只有您不应该使用。
selectedAnswer.setOnClickListener {//<===this part need to be removed as its setting onClick which will work if next time same button is clicked
if (!mAnimator!!.isRunning) {
mCurrentLevel = 0;
mAnimator!!.start()
}
}需要删除该部件作为其设置的onClick,如果下一次单击相同的按钮,该设置将工作。
如果您只想在按下任何答案按钮时才播放动画。在设置应答文本视图/按钮的选项时,需要设置动画器。
下面的代码可以给你一个想法
firstOptionTextView.setText(Put the Option here);
if (firstOptionTextView.text.toString() == listOfTests[currentQuestion].rightAnswer){
val layerDrawable = selectedAnswer.background as LayerDrawable
mClipDrawable =
layerDrawable.findDrawableByLayerId(R.id.clip_drawable_false) as ClipDrawable
mAnimator = TimeAnimator()
mAnimator!!.setTimeListener(this)
firstOptionTextView.setOnClickListener {
if (!mAnimator!!.isRunning) {
mCurrentLevel = 0;
mAnimator!!.start()
}
}
} else {
val layerDrawable = selectedAnswer.background as LayerDrawable
mClipDrawable =
layerDrawable.findDrawableByLayerId(R.id.clip_drawable_true) as ClipDrawable
mAnimator = TimeAnimator()
mAnimator!!.setTimeListener(this)
firstOptionTextView.setOnClickListener {
if (!mAnimator!!.isRunning) {
mCurrentLevel = 0;
mAnimator!!.start()
}
}现在,由于这个选项有一个动画师,无论是正确的,不正确的,它将被播放。
https://stackoverflow.com/questions/61177214
复制相似问题