我创建了以下访问器,以便将简单的补间添加到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.getX()
和ImageView.getY()
出现在api 11级。但我不知道是否应该使用它们或我应该使用layaoutparamenters.topMargin
答案 0 :(得分:6)
我知道这个问题已经很老了,但无论如何我都会回答以后搜索的问题。
错误在
Tween.registerAccessor(ImageViewAccessor.class, new ImageViewAccessor());
第一个参数是您要访问的类,第二个参数是应该用于访问该类的Accessor。
你写道你想要访问ImageViewAccessor,但实际上你想使用ImageViewAccessor访问ImageView类。
应该是这样的:
Tween.registerAccessor(ImageView.class, new ImageViewAccessor());