我创建了一个非常简单的动画,该动画应该使图标淡出然后淡入,然后淡出。 (仅供娱乐)
当您点击屏幕时,我希望图标在 50 毫秒内淡出,然后立即淡入,然后立即再次淡出。
但是,当我点击时,图标会淡出并且什么都不做!
方法如下:
public boolean onTouchEvent(MotionEvent event) {
centralIcon = (ImageView) findViewById(R.id.centralIcon);
float fullAlpha = centralIcon.getAlpha();
centralIcon.animate().setDuration(50);
centralIcon.animate().alpha(0);
centralIcon.animate().alpha(fullAlpha);
centralIcon.animate().alpha(0);
return true;
}
为什么它不会淡出?
最佳答案
发件人:http://developer.android.com/reference/android/view/ViewPropertyAnimator.html
public ViewPropertyAnimator alpha (float value)
在 API 级别 12 中添加 此方法将使 View 的 alpha 属性动画化为指定值。 已在属性上运行的动画将被取消。
部分问题以粗体显示。您可以通过再次调用 alpha 立即取消前两个 alpha 动画。 (您可以通过更改目标 alpha 值来对此进行测试。)即使情况并非如此,期望动画以您想要的方式运行也是没有意义的。 animate().alpha(value) 没有按照您的假设进行操作。
如果您希望 View 在 50 毫秒之类的时间段后开始淡入,您需要以某种方式指定该延迟。有很多方法可以使这个序列发生。例如,您可以使用您在以后的动画中指定的偏移量制作一个 AnimationSet(如 AndroidNoob 回答的那样)。您可以添加一个 AnimationListener 来监听动画结束以开始下一个。您可以创建另一个线程,在 UI 线程上运行一系列动画。
关于Android View淡出但不会淡入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26116603/