イメージビューの位置に単純なトゥイーンを追加するために、次のアクセサーを作成しました。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();
しかし、「ターゲットの TweenAccessor が見つかりませんでした」というクラッシュが発生するTween.to(logo, ImageViewAccessor.Y, 1f).target(50).start();
ので、2 つの質問があります。
- このフレームワークを使用して、単純なトゥイーンをイメージビューに追加できますか (イメージを上に約 5 ピクセル、下に 5 ピクセル移動させたい)?
- また、関数を呼び出す直前にアクセサーを登録した場合、このエラーが表示されるのはなぜですか?
EDIT:また、 APIレベル11ImageView.getX()
にImageView.getY()
存在します。しかし、それらを使用する必要があるのか、使用する必要があるのか わかりませんlayaoutparamenters.topMargin