我创建了一个按钮,当它被触摸时淡入淡出,当它不被触发时淡出。我能够通过在java中使用setAlpha来实现这一点。代码和问题如下所示:
Permanent.increment
我遇到的问题是每当我释放按钮时,在Permanent.value
能够完全播放之前alpha设置为0,因此按钮不会淡出。
如果我删除该行:
buttonPressed.getBackground().setAlpha(0);
buttonPressed.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
buttonPressed.getBackground().setAlpha(255);
buttonPressed.startAnimation(animationFadeIn);
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
buttonPressed.startAnimation(animationFadeOut);
return true;
}
return false;
}
});
然后animationFadeOut
将播放,但会立即返回buttonPressed.getBackground().setAlpha(0);
。
当用户停止触摸按钮时,如何让animationFadeOut
完全播放并让按钮字母为setAlpha(255)
?
答案 0 :(得分:1)
我认为使用setInterpolator()进行fadeIn和fadeOut动画可以解决您的问题。 例如: 动画animationFadeIn = new AlphaAnimation(0,1); animationFadeIn.setInterpolator(new DecelerateInterpolator()); animationFadeIn.setDuration(1000);
Animation animationFadeOut = new AlphaAnimation(1, 0);
animationFadeOut.setInterpolator(new AccelerateInterpolator());
animationFadeOut.setDuration(1000);
我从this链接获得了解决方案,您可以了解有关AccelerateInterpolator here的更多信息。
目前无法测试。但似乎很有希望。希望这有帮助!
答案 1 :(得分:0)
最好不要手动设置alpha,使用动画设置alpha
// Define the animators
Animation fadeInAnimation = new AlphaAnimation(0.0f, 1.0f);
Animation fadeOutAnimation = new AlphaAnimation(1.0f, 0.0f);
// Duration of animation
fadeInAnimation.setDuration(1000);
fadeOutAnimation.setDuration(1000);
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
buttonPressed.startAnimation(fadeInAnimation);
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
buttonPressed.startAnimation(fadeOutAnimation);
return true;
}
return false;
}