我创建了以下访问器,以便向 imageview 的位置添加一个简单的补间。我正在使用相对布局。
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();
但是我遇到了崩溃“没有为目标找到 TweenAccessor”,Tween.to(logo, ImageViewAccessor.Y, 1f).target(50).start();
所以我有 2 个问题。
- 我可以使用这个框架向图像视图添加简单的补间(我希望图像向上悬停约 5 px,然后向下悬停 5 px)?
- 另外,如果我在调用函数之前注册了访问器,为什么会显示此错误?
编辑:另外, ImageView.getX()
并且ImageView.getY()
存在于 api 级别 11 中。但我不知道是否应该使用它们或者我应该使用layaoutparamenters.topMargin