Android视图上的上下动画

Android视图上的上下动画,android,animation,android-animation,Android,Animation,Android Animation,我正在制作一个闪屏,我希望图像视图能像悬浮一样不断上升然后下降。这将在后台异步任务中加载数据库时发生。我尝试过为视图设置动画,但它只在一个方向上设置一次。我如何做到这一点?提前感谢:D自下而上: <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:int

我正在制作一个闪屏,我希望图像视图能像悬浮一样不断上升然后下降。这将在后台异步任务中加载数据库时发生。我尝试过为视图设置动画,但它只在一个方向上设置一次。我如何做到这一点?提前感谢:D

自下而上:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromYDelta="100%p"
    android:toYDelta="0%p" />
自下而上:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromYDelta="100%p"
    android:toYDelta="0%p" />

我要做的是像您以前一样设置视图的动画,在AnimationEnd中有一种无限循环:

 //in onPreExecute do levitate(ivSplashLogo, 300, true)
 //in onPostExecute do levitate(ivSplashLogo, 300, false)

 public void levitate (final View movableView,final float Y,boolean animated){
   if(animated) {
        final long yourDuration = 200;
        final TimeInterpolator yourInterpolator = new DecelerateInterpolator();
        movableView.animate().
                translationYBy(Y).
                setDuration(yourDuration).
                setInterpolator(yourInterpolator).
                setListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        super.onAnimationEnd(animation);
                        levitate(movableView, -Y, true);
                    }
                });
    }
 }

我还没有试过,但你可以试一试,告诉我我要做的是像你以前做的那样设置视图的动画,在AnimationEnd中有一种无限循环:

 //in onPreExecute do levitate(ivSplashLogo, 300, true)
 //in onPostExecute do levitate(ivSplashLogo, 300, false)

 public void levitate (final View movableView,final float Y,boolean animated){
   if(animated) {
        final long yourDuration = 200;
        final TimeInterpolator yourInterpolator = new DecelerateInterpolator();
        movableView.animate().
                translationYBy(Y).
                setDuration(yourDuration).
                setInterpolator(yourInterpolator).
                setListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        super.onAnimationEnd(animation);
                        levitate(movableView, -Y, true);
                    }
                });
    }
 }

我还没有尝试过这个,但你可以试一试,告诉我

我不知道插值器的用途以及它与持续时间的区别。插值器是一条贝塞尔曲线,将对动画应用不同的效果。是一个视频,将向您显示各种插值器的结果。这是你想看的照片。谢谢我在OnProgressUpdate中调用它,但它没有移动:我不知道插值器的作用以及它与持续时间的区别。插值器是一条贝塞尔曲线,它将对动画应用不同的效果。是一个视频,将向您显示各种插值器的结果。这是你想看的照片。谢谢我从OnProgressUpdate中调用它,但它没有移动:我编辑了我的答案并更改了代码。我所要做的只是更改时间,但它可以按照我想要的方式工作。非常感谢DI编辑了我的答案并修改了代码。我所要做的就是改变时间,但它按照我的意愿工作。非常感谢D