没有Accessor注册。通用补间引擎

时间:2013-05-08 22:21:40

标签: android imageview tween universal

我创建了以下访问器,以便将简单的补间添加到imageview的位置。我正在使用RelativeLayout。

public class ImageViewAccessor implements TweenAccessor<ImageView> {

     public static final int X = 1;
     public static final int Y = 2;
     public static final int XY = 3;

    @SuppressLint("NewApi")
    public int getValues(ImageView target, int tweenType, float[] returnValues) {
         switch (tweenType) {
             case X: returnValues[0] = target.getX(); return 1;
             case Y: returnValues[0] = target.getY(); return 1;
             case XY:
                 returnValues[0] = target.getX();
                 returnValues[1] = target.getY();
                 return 2;
             default: assert false; return 0;
         }
     }

    @SuppressLint("NewApi")
     public void setValues(ImageView target, int tweenType, float[] newValues) {    
         switch (tweenType) {
             case X: target.setX(newValues[0]); break;
             case Y: target.setY(newValues[1]); break;
             case XY:
                 target.setX(newValues[0]);
                 target.setY(newValues[1]);
                 break;
             default: assert false; break;
         }
     }
}

我正在使用以下代码注册访问者:

Tween.registerAccessor(ImageViewAccessor.class, new ImageViewAccessor());
Tween.to(logo, ImageViewAccessor.Y, 1f).target(50).start();

但我在Tween.to(logo, ImageViewAccessor.Y, 1f).target(50).start();发生了“没有为目标找到TweenAccessor”的崩溃,所以我有2个问题。

  • 我可以使用此框架将简单的补间添加到imageview(我希望图像悬停大约5 px然后向下翻转5 px?)
  • 另外,如果我在调用函数之前注册了一个访问器,为什么会出现此错误?

编辑:此外,ImageView.getX()ImageView.getY()出现在api 11级。但我不知道是否应该使用它们或我应该使用layaoutparamenters.topMargin

1 个答案:

答案 0 :(得分:6)

我知道这个问题已经很老了,但无论如何我都会回答以后搜索的问题。

错误在

Tween.registerAccessor(ImageViewAccessor.class, new ImageViewAccessor());

第一个参数是您要访问的类,第二个参数是应该用于访问该类的Accessor。

你写道你想要访问ImageViewAccessor,但实际上你想使用ImageViewAccessor访问ImageView类。

应该是这样的:

Tween.registerAccessor(ImageView.class, new ImageViewAccessor());