我正在创建一个具有动画的计数器,该动画可以输入和输出数字。我在xml布局中有这个动画,通常每秒运行一次。我可以在下面video中看到,我的动画做了很多事情,它没有正确使用。
动画的我的xml代码是:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:fromXScale="1.0"
android:toXScale="2.0"
android:fromYScale="1.0"
android:toYScale="2.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="350"/>
<scale
android:fromXScale="2.0"
android:toXScale="1.0"
android:fromYScale="2.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="350"/>
</set>
我的“天文台”代码读取系统时间并启动动画并更改数字:
void onTime() { //this function is executed more than 1 time per second...
long y=System.currentTimeMillis()-start; //start is initialized on the onCreate
if (isBetween(Integer.parseInt(Long.toString(y)), 1000, 1070)) {
time.setText("3");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
} if (isBetween(Integer.parseInt(Long.toString(y)), 2000, 2070)) {
time.setText("2");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
}else if (isBetween(Integer.parseInt(Long.toString(y)), 3000, 3070)) {
time.setText("1");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
}else if (isBetween(Integer.parseInt(Long.toString(y)), 4000, 4070)) {
time.setText("GOOO!");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
count.setVisibility(View.VISIBLE);
cuenta = 0;
count.setText("0");
}else if (isBetween(Integer.parseInt(Long.toString(y)), 5000, 5070)) {
time.setText("1");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
}else if (isBetween(Integer.parseInt(Long.toString(y)), 6000, 6070)) {
time.setText("2");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
}else if (isBetween(Integer.parseInt(Long.toString(y)), 7000, 7070)) {
time.setText("3");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
}else if (isBetween(Integer.parseInt(Long.toString(y)), 8000, 8070)) {
time.setText("4");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
}else if (isBetween(Integer.parseInt(Long.toString(y)), 9000, 9070)) {
time.setText("5");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
}else if (isBetween(Integer.parseInt(Long.toString(y)), 10000, 10070)) {
time.setText("Time!");
time.setAnimation(anim);
System.out.println(Integer.parseInt(Long.toString(y)));
//count.setVisibility(View.INVISIBLE);
int finalcount = cuenta;
System.out.println(finalcount);
}
}
有关我可以更改哪些内容以正确查看动画的任何想法?我认为时间很好,最后,动画的持续时间为700毫秒,每1000毫秒开始。
答案 0 :(得分:3)
看起来您正在尝试将动画缩放到两倍大小,然后将其缩小回原始大小。然而,你所拥有的是同时发生的两个动画。一个动画缩小,另一个动画扩展。这导致了冲突。
您需要做的是拥有两个动画文件。启动一个动画,并在第一个动画完成时在动画侦听器中启动第二个动画。