Android - 来自动画视图的 getAlpha()
Android - getAlpha() from Animated View
我有这样的动画:
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new DecelerateInterpolator());
fadeOut.setDuration(350);
myView.startAnimation(fadeOut);
我正在尝试在动画过程中获取它的 Alpha:
System.out.println(myView.getAlpha());
但是,它始终returns“1.0”贯穿整个动画。如何获取动画过程中myView
的实际alpha值?
通过将 Transformation
与 AlphaAnimation
一起使用,您可以直接从 AlphaAnimation
对象而不是 View
.[=25= 中检索 alpha 值]
使用转换的目的:
Defines the transformation to be applied at one point in time of an Animation.
步骤:
新建Transformation.java
class如图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
我有这样的动画:
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new DecelerateInterpolator());
fadeOut.setDuration(350);
myView.startAnimation(fadeOut);
我正在尝试在动画过程中获取它的 Alpha:
System.out.println(myView.getAlpha());
但是,它始终returns“1.0”贯穿整个动画。如何获取动画过程中myView
的实际alpha值?
通过将 Transformation
与 AlphaAnimation
一起使用,您可以直接从 AlphaAnimation
对象而不是 View
.[=25= 中检索 alpha 值]
使用转换的目的:
Defines the transformation to be applied at one point in time of an Animation.
步骤:
新建
Transformation.java
class如图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