1

イメージビューの位置に単純なトゥイーンを追加するために、次のアクセサーを作成しました。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

4

1 に答える 1

6

この質問はかなり古いことは知っていますが、後でこれを検索する人のためにとにかく答えます。

エラーは

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

最初のパラメーターはアクセスするクラスで、2 番目のパラメーターはそのクラスへのアクセスに使用するアクセサーです。

ImageViewAccessor にアクセスしたいと書いていましたが、実際には ImageViewAccessor を使用して ImageView クラスにアクセスしたいと思います。

次のようになります。

Tween.registerAccessor(ImageView.class, new ImageViewAccessor());
于 2013-07-01T19:11:32.907 に答える