0

こんにちは私はリストビューのスケールアニメーションを作成するこのコードを見ました

public class ViewAnimation extends Animation {
float centerX, centerY;
public ViewAnimation3(){}
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
centerX = width/2.0f;
centerY = height/2.0f;
setDuration(2500);
setFillAfter(true);
setInterpolator(new LinearInterpolator());
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final Matrix matrix = t.getMatrix();
matrix.setScale(interpolatedTime, interpolatedTime);
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
}

これにより、左上のポイントからではなく、アクティビティの中心からアニメーションが作成されることはわかっていますが、これらのポイントがどこにあるのか(-centerX、-centerY)、およびアニメーションの左上隅が何であるかがわかりません。または表示!!

4

1 に答える 1

0

行列演算について話している場合、それは非常に簡単です。基本的なsetScaleは、原点の周りにスケーリングを適用します。したがって、指定された中心点の平行移動を原点に事前に連結し、反対の平行移動を事後連結して中心点に戻すことにより、代わりに中心点の周りのスケーリングを取得します。

于 2012-04-25T03:05:25.970 に答える