Android动画 - 从上一个动画端点重新启动动画

时间:2014-03-08 15:52:57

标签: android animation

我有一个动画,当按下按钮时,TextView会从左向右移动。现在我希望端点成为下一个动画的新起源。问题是,当我再次单击按钮时,动画将重置并从之前的旧起点开始。

 anim1=new   TranslateAnimation(Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.0f,
    Animation.RELATIVE_TO_SELF,0.0f);
    anim1.setFillEnabled(true);
    anim1.setFillAfter(true);
    anim1.setInterpolator(new AnticipateInterpolator(2.5f));
    anim1.setDuration(500);

btnStart.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            textview1.startAnimation(anim1);
        }
    });

这是我的xml布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainAnimation" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

  <Button
    android:id="@+id/btnStart"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_alignRight="@+id/textView1"
    android:layout_marginTop="22dp"
    android:text="Start" />
</RelativeLayout>

帮助很赞赏。非常感谢。

1 个答案:

答案 0 :(得分:0)

你应该有两个动画为了这个目的一个从左到右移动我另一个动画文本从右到左移动如果我很清楚你在这里的意思。也使用布尔来检查状态为你的动画,以触发纠正一个。

示例如果第一个动画是触发器设置BooleanFirstAnm = true;所以下次按下boutton时检查BooleanFirstAnm是否为true,启动第二个anim然后设置BooleanFirstAnm = false;

if(BooleanFirstAnm){
BooleanFirstAnm= false;
//Start second anim
}else{
BooleanFirstAnm =true;
//start first

}
希望它有所帮助。