10

Androidのアニメーションについて知っている人はいますか?次のようなものを作成したい:

  • デバイス画面の中央に大きな画像があります。
  • この画像は(アニメーションによって)小さくなり、デバイス画面の隅に移動します。

この次のシーケンスのようなものです。

ここに画像の説明を入力

どんなヒントでも大歓迎です!前もって感謝します!

4

2 に答える 2

8

およびViewPropertyAnimatorのようなメソッドで、を使用します。APIレベル11以降で、を呼び出すことでを取得します。古いデバイスをサポートしている場合、NineOldAndroidsはほぼ機能するバックポートを提供します。scaleXBy()translateYBy()ViewPropertyAnimatoranimate()View

また、以下をお読みください。

于 2012-09-10T18:24:27.063 に答える
7

回転と動きを同時に行うクラスがあります。コストはかかりますが、すべての API バージョンで機能します。

public class ResizeMoveAnimation extends Animation {
    View view; 
    int fromLeft; 
    int fromTop; 
    int fromRight;
    int fromBottom;
    int toLeft; 
    int toTop; 
    int toRight;
    int toBottom;

    public ResizeMoveAnimation(View v, int toLeft, int toTop, int toRight, int toBottom) {
        this.view = v;
        this.toLeft = toLeft;
        this.toTop = toTop;
        this.toRight = toRight;
        this.toBottom = toBottom;

        fromLeft = v.getLeft();
        fromTop = v.getTop();
        fromRight = v.getRight();
        fromBottom = v.getBottom();

        setDuration(500);
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {

        float left = fromLeft + (toLeft - fromLeft) * interpolatedTime;
        float top = fromTop + (toTop - fromTop) * interpolatedTime;
        float right = fromRight + (toRight - fromRight) * interpolatedTime;
        float bottom = fromBottom + (toBottom - fromBottom) * interpolatedTime;

        RelativeLayout.LayoutParams p = (LayoutParams) view.getLayoutParams();
        p.leftMargin = (int) left;
        p.topMargin = (int) top;
        p.width = (int) ((right - left) + 1);
        p.height = (int) ((bottom - top) + 1);

        view.requestLayout();
    }
}
于 2013-01-21T23:10:54.370 に答える