Android 按钮动画(具有ClipDrawable的TimeAnimator)无法正常工作
我想通过从左到右填充按钮背景来设置动画。我用。当我把它放在onCreate中时,它可以正常工作,但当用户在我的测验中选择正确答案时,我需要设置按钮的动画。 这是我的核对答案方法Android 按钮动画(具有ClipDrawable的TimeAnimator)无法正常工作,android,animation,kotlin,android-animation,Android,Animation,Kotlin,Android Animation,我想通过从左到右填充按钮背景来设置动画。我用。当我把它放在onCreate中时,它可以正常工作,但当用户在我的测验中选择正确答案时,我需要设置按钮的动画。 这是我的核对答案方法 fun checkAnswer(selectedAnswer: Button) { enableAnswersButton(false) if (selectedAnswer.text.toString() == listOfTests[currentQuestion].rightAnsw
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)
}
}
请帮忙,我已经查过了!。那里的实现很好,只是你不应该使用
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()
}
}
现在,由于此选项有一个动画师用于“正确”或“不正确”,因此将播放它。为此,您需要将另一个动画师单独保存到正确答案,单击任何按钮并启动其动画师后,手动启动**正确按钮的**动画师
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()
}
}