【问题标题】:Android - getAlpha() from Animated ViewAndroid - 来自动画视图的 getAlpha()
【发布时间】:2016-07-18 11:21:04
【问题描述】:

我有一个这样的动画:

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值?

【问题讨论】:

标签: java android animation alpha


【解决方案1】:

通过将TransformationAlphaAnimation 一起使用,您可以直接从AlphaAnimation 对象而不是View 中检索alpha 值。

使用Transformation的目的:

定义要在动画的某一时间点应用的变换。


步骤:

  1. 创建一个新的Transformation.java 类,如https://sourcegraph.com/android.googlesource.com/platform/frameworks/base/-/blob/core/java/android/view/animation/Transformation.java 所示。

  2. 初始化一个Transformation对象:

    private Transformation myTransformation;
    mTransformation = new Transformation();
    
  3. 使用您的代码:

    Animation fadeOut = new AlphaAnimation(1, 0);
    fadeOut.setInterpolator(new DecelerateInterpolator());
    fadeOut.setDuration(350);
    
  4. 获取开始绘制视图层次结构的时间(以毫秒为单位):

    final long time = myView.getDrawingTime();
    
  5. 获取要在指定时间点应用的转换。最后,获取动画过程中实际的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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
相关资源
最近更新 更多