web-dev-qa-db-ja.com

setAnimation vs startAnimation in android

基本的に、ビューをある場所から別の場所に移動したいのですが、高さも徐々に上げたいので、setAnimationまたはstartAnimationを使用する必要があります。

_TranslateAnimation ta = new TranslateAnimation(0, 0, Animation.RELATIVE_TO_SELF, -otherview.getHeight());
ta.setDuration(1000);
ta.setFillAfter(true);

myview.startAnimation(ta); //or, which one to use and what is the difference. 

myview.setAnimation(ta);
_

質問:この相対的なレイアウトを移動する方法は?

myview.scrollTo(x,y)を試しましたが、役に立ちませんでした。ビューの高さを徐々に上げることはできますか?

11
Programmer

StartAnimationを使用します。

以下はサンプルスニペットです

trans = new TranslateAnimation(0, 100, 0, 100);
trans.setDuration(250);
trans.setInterpolator(new AccelerateInterpolator(1.0f));
someView.startAnimation(trans);

それに加えて、私も徐々に高さを上げたいです、

このために、アニメーションをスケーリングします。

それらを1つのファイルに結合する場合は、Setを使用します。

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:Android="schemas.Android.com/apk/res/Android"
Android:interpolator="@Android:anim/linear_interpolator">
   <scale Android:fromXScale="0.0" Android:fromYScale="0.0"
          Android:toXScale="1.0" Android:toYScale="1.0" 
          Android:duration="700" Android:fillBefore="false" />
   <translate Android:fromXDelta="-200" Android:fromYDelta="-200"
          Android:duration="700" />
</set>

以下のコードをJavaファイル内に配置します:

Animation logoMoveAnimation = AnimationUtils.loadAnimation(this, R.anim.logoanimation); 
logoIV.startAnimation(logoMoveAnimation);

setAnimation

このビューで再生する次のアニメーションを設定しますが、ビューアニメーションはまだ開始されていません。

startAnimation

アニメーションをすぐに再生する場合は、startAnimationを使用します。この方法では、開始時間と無効化をきめ細かく制御できますが、次のことを確認する必要があります。

1)アニメーションには開始時間が設定されています。

2)アニメーションが開始されることになっているときに、ビューが無効になります。

21
Vipul Shah

これが私の理解です。

SetAnimation

ビューがviewGroupに追加されると、アニメーションが呼び出されます。ビューが追加されると、アニメーションは呼び出されません。

StartAnimation

ビューが追加されていても、アニメーションは常に呼び出されます。

1
user2024270