我有这样的动画:
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new DecelerateInterpolator());
fadeOut.setDuration(350);
myView.startAnimation(fadeOut);
我正在努力让它的Alpha在动画中如此:
System.out.println(myView.getAlpha());
但是,它总是在整个动画中返回“1.0”。如何在动画过程中获取myView
的实际alpha值?
答案 0 :(得分:5)
将Transformation
与AlphaAnimation
一起使用,您可以直接从AlphaAnimation
对象而不是View
检索Alpha值。
使用转换的目的:
定义要在动画的某个时间点应用的变换。
<强>步骤:强>
创建一个新的Transformation.java
类,如https://sourcegraph.com/android.googlesource.com/platform/frameworks/base/-/blob/core/java/android/view/animation/Transformation.java所示。
初始化Transformation
对象:
private Transformation myTransformation;
mTransformation = new Transformation();
使用您的代码:
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new DecelerateInterpolator());
fadeOut.setDuration(350);
获取视图层次结构图的开始时间(以毫秒为单位):
final long time = myView.getDrawingTime();
获取要在指定时间点应用的转换。最后,在动画期间获取实际的alpha值:
fadeOut.getTransformation(time, myTransformation);
final float myAlphaValue = myTransformation.getAlpha();
资源: https://sourcegraph.com/android.googlesource.com/platform/frameworks/base/-/blob/core/java/android/widget/ProgressBar.java#L1699 https://developer.android.com/reference/android/view/animation/Animation.html https://developer.android.com/reference/android/view/animation/Transformation.html