Android 如何在不使用时间插值的情况下将动画效果应用于视图

Android 如何在不使用时间插值的情况下将动画效果应用于视图,android,animation,interpolation,Android,Animation,Interpolation,我正在尝试使用触摸事件(当时)更改视图的位置、比例和alpha。当用户触摸视图并进行一些移动时,视图应受到影响。这就像通过触摸距离而不是时间应用组合动画 我还可以计算距离的插值。例如,如果我将手指移动到目标距离的一半,则插值值为0,5 实际上,我可以通过改变视图周围的边距来实现这一点,但它只适用于ImageView。否则,在应用效果期间,图元的位置会发生变化。(如RelativeLayout中的文本视图) 所以我想我可以创建一个组合动画,使用我自己的插值代替时间插值。我希望这是可能的。我会按照以

我正在尝试使用触摸事件(当时)更改视图的位置、比例和alpha。当用户触摸视图并进行一些移动时,视图应受到影响。这就像通过触摸距离而不是时间应用组合动画

我还可以计算距离的插值。例如,如果我将手指移动到目标距离的一半,则插值值为0,5

实际上,我可以通过改变视图周围的边距来实现这一点,但它只适用于ImageView。否则,在应用效果期间,图元的位置会发生变化。(如RelativeLayout中的文本视图)


所以我想我可以创建一个组合动画,使用我自己的插值代替时间插值。我希望这是可能的。

我会按照以下方式做:

  • 创建自定义
    FrameLayout
    并调用
    setWillNotDraw(false)
  • 将图像加载为要绘制的位图
  • 捕捉触摸事件在
    FrameLayout
  • onDraw
    方法中为
    位图执行正确的绘制和变换(位置、alpha、比例)

  • 如果我可以应用自己的插值值,我想使用动画。我认为使用动画类的性能更好。是的,但动画类使用这个随时间变化的自定义插值器。因此,创建和设置自定义插值器并不能解决我的问题。我需要用距离而不是时间来应用效果。好吧,那么可能很难使用动画,我想你正在寻找基于变量的视图的适当变换?是的,没错。更改alpha和位置是可以的。但调整尺寸很难。