我尝试做的是将ImageView从正常尺寸缩放到20%,然后再缩回。这应该是循环的。我用以下代码完成了这个,但它不能正常工作。更多信息如下。
动画/ scale.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:duration="1000"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:toXScale="1.2"
android:toYScale="1.2"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false" />
<scale
android:startOffset="1000"
android:duration="1000"
android:fromXScale="1.2"
android:fromYScale="1.2"
android:toXScale="1.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false" />
</set>
然后在我的代码中我做
private void scaleAnimation() {
final Animation scaler = AnimationUtils.loadAnimation(this, R.anim.scale);
scaler.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
animation.reset();
animation.startNow();
}
});
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
scale.startAnimation(scaler);
}
}, 2000);
}
我有处理程序,所以我可以看到一开始发生了什么。
问题有点难以解释。一旦动画开始,我的图像似乎会缩放,然后它会执行动画。因此,图像应该显示2秒钟。正如动画开始时它突然变得更大,看起来是25% - 50%,然后动画正常运行。动画结束后,图像会很快调整到原始大小,然后再次放大,然后动画重新开始。
我尝试过几张不同的图像。据我所知,fromXScale = 1.0启动没有缩放的动画,即图像不变。希望有人可以阐明我做错了什么或者我误解了这些概念。
干杯
答案 0 :(得分:4)
如果您要完成的是一个视图,从1.0到1.2不断缩放到1.0,您可以使动画更简单。
您将执行以下操作: 仅定义一个缩放动画(从1.0到1.2) 将重复计数设置为INFINITE 将重复模式设置为REVERSE
有关详情,请查看Animation class
上的文件答案 1 :(得分:0)
就我而言,我需要为视图设置一次动画 (1.0f -> 0.6f -> 1.0f)
cheezy 的解决方案适用于我改变 repeatCount = 1 而不是无穷大。
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:duration="600"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatMode="reverse"
android:repeatCount="1"
android:toXScale="0.6"
android:toYScale="0.6" />
</set>