Android动画缩放和闪烁
我对动画中的比例有问题。“平移”工作正常,但当我向动画添加缩放时,它不会返回到开始点,并且在动画再次启动时闪烁Android动画缩放和闪烁,android,xml,animation,scale,Android,Xml,Animation,Scale,我对动画中的比例有问题。“平移”工作正常,但当我向动画添加缩放时,它不会返回到开始点,并且在动画再次启动时闪烁 <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator"> <translate android:fromYDelta="-150" android:toYDe
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromYDelta="-150"
android:toYDelta="150"
android:fillAfter="true"
android:duration="1500"
/>
<scale
android:fillAfter="true"
android:fromXScale="1"
android:fromYScale="1"
android:toXScale="1.2"
android:toYScale="1.2"
android:duration="1500"
android:pivotX="50%"
android:pivotY="50%"
/>
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromYDelta="150"
android:toYDelta="-150"
android:fillAfter="true"
android:duration="1500"
android:startOffset="1500"
/>
<scale
android:fillAfter="true"
android:fromXScale="1.2"
android:fromYScale="1.2"
android:toXScale="1"
android:toYScale="1"
android:duration="1500"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="1500"
/>
</set>
Shape是一个xml矩形。
animation.setFillAfter(true)代码>
动画完成后,将强制图像保持在动画位置
如果要将图像返回到起始位置,请将其设置为false
animation.setFillAfter(false)代码>如果有人想知道答案
private void animateImage(){
float x = 1;
float scale = 1.1f;
x = (imageViewImage.getHeight()*1.1f - imageViewImage.getHeight())/2;
imageViewImage.animate().translationY(x).scaleX(scale).scaleY(scale).setDuration(8000).withEndAction(new Runnable() {
@Override
public void run() {
imageViewImage.animate().translationY(0).scaleX(1f).scaleY(1f).setDuration(8000).withEndAction(new Runnable() {
@Override
public void run() {
animateImage();
}
});
}
});
}
很抱歉,它没有返回到起始位置您正在onAnimationEnd中再次启动动画@Bartosz为什么?您是否也从xml文件中删除了任何android:fillAfter=“true”?@Bartosz请参阅Gunjan的评论。您也从xml中删除了吗?我在onAnimationEnd中再次启动动画以重复它
private void animateImage(){
float x = 1;
float scale = 1.1f;
x = (imageViewImage.getHeight()*1.1f - imageViewImage.getHeight())/2;
imageViewImage.animate().translationY(x).scaleX(scale).scaleY(scale).setDuration(8000).withEndAction(new Runnable() {
@Override
public void run() {
imageViewImage.animate().translationY(0).scaleX(1f).scaleY(1f).setDuration(8000).withEndAction(new Runnable() {
@Override
public void run() {
animateImage();
}
});
}
});
}