2

プログラムで画像を翻訳しました。後で、私のコードで、画像をその中心を中心に回転させようとします。ただし、回転は、変換前の元の配置を中心に画像を回転させています。コードの翻訳部分をコメントアウトすると、すべてが正常に機能し、画像が中心を中心に回転します。しかし、最初に翻訳すると、回転は新しい位置を考慮しません。私は何をする必要がありますか?

View v;
animation anim = AnimationUtils.loadAnimation(getApplication(),R.anim.slide_in_up);
v.setTranslationY(#);
v.startAnimation(anim);

以下のxml:

<set xmlns:android="http://schemas.android.com/apk/res/android">
 <rotate
  android:fromDegrees="-360.0"
  android:toDegrees="0.0"
  android:pivotX="50%"
  android:pivotY="50%"
  android:duration="1000" />
</set>
4

3 に答える 3

1

変換が完了した後、変換を永続化するために、おそらくandroid:fillAfter="true"コードから追加するか、同等のものを追加する必要があります。setFillAfter(boolean fillAfter)

fillAfter が true の場合、このアニメーションが実行した変換は、終了後も保持されます。設定されていない場合、デフォルトは false です。

// 編集: API レベル 11 以降の setTranslationY メソッドを使用しているとは最初は知りませんでした。

上部の位置を基準にして、このビューの垂直方向の位置を設定します。これにより、オブジェクトのレイアウトによって配置された場所に加えて、レイアウト後にオブジェクトが効果的に配置されます。

私の推測では、レイアウト後の配置がアニメーションのすべての依存関係に影響を与えるわけではありません。たとえば、「fillAfter」と同等のことをしないため、結果は期待どおりではありません。setTranslationY メソッドを削除し、TranslationAnimation を使用して翻訳を実行することは、あまり適切ではない回避策です。デュレーションをゼロに設定することで、「即時」翻訳を模倣できます。私は翻訳後にアニメーション化された回転を自分で成功させたので、このアプローチを使用すると、探している結果を得ることができるはずです...

于 2011-12-02T06:59:59.147 に答える
0

答えは、最初に画像を回転してから平行移動することです。私はそれを反対の方法で行っていたので、中心を中心に回転していませんでした.

于 2012-02-02T03:55:01.507 に答える