【问题标题】:Android ScaleAnimation is relative to current size not acctual size... how to fix?Android ScaleAnimation 是相对于当前大小而不是实际大小......如何解决?
【发布时间】:2021-02-03 12:41:52
【问题描述】:

我有一个按钮,按下时可以使另一个对象按比例放大。

两个对象都在代码中添加到视图中

container.addView(button)
container.addView(object)
object.scaleX = 0f;
object.scaleY = 0f;

稍后我想将动画从 0f 缩放到 1f... 像这样:

      val scaleAnimation = ScaleAnimation(0f, 1f,
      0f, 1f, Animation.RELATIVE_TO_PARENT,
      0.5f, Animation.RELATIVE_TO_PARENT, 0.5f)
      scaleAnimation.fillAfter = true
      scaleAnimation.duration = 100
      object.startAnimation(scaleAnimation)

这不起作用。在 ScaleAnimation 中,0f 和 1f 是相对于对象的当前比例,而不是相对于它的实际大小。当然,这不应该是这样的吗?

如果我只用 object.scaleX = 1f... 替换动画...无论原来的 scaleX 是什么,它都可以工作。所以,看起来 ScaleAnimation 实际上并没有为对象的 ScaleX 和 ScaleY 属性设置动画,它只是在顶部添加了一个新的比例层。

如何使动画在对象的实际 ScaleX 属性上工作,对象从 0f 开始,然后在需要时动画到 1f?

【问题讨论】:

    标签: android animation


    【解决方案1】:

    好的,所以事实证明 ScaleAnimation 不是合适的动画师。最后我发现我必须使用:

    object.animate().scaleX(1f).scaleY(1f).setDuration(100).setInterpolator(DecelerateInterpolator())
    

    这个方法实际上是动画对象的实际 ScaleX 和 Y 属性,而不是在顶部定义一些新的缩放层。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多