Android视图上的上下动画

时间:2016-04-22 12:26:49

标签: android animation android-animation

我制作了一个启动画面,我希望图像视图能够连续上升然后向下移动,就像它的悬浮一样。当数据库在后台加载(AsyncTask)时会发生这种情况。我尝试过动画视图,但它只是在一个方向而且只是一次。我该如何做到这一点?提前谢谢你:D

2 个答案:

答案 0 :(得分:2)

自下而上:

<?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="0%p"
    android:toYDelta="100%p" />

代码:

if (findViewById(R.id.llIncludeBottom).getVisibility() == View.VISIBLE) {
                    findViewById(R.id.llIncludeBottom).setVisibility(View.GONE);
                    findViewById(R.id.llIncludeBottom).setAnimation(
                            AnimationUtils.loadAnimation(this, R.anim.top_bottom));
                } else {
                    findViewById(R.id.llIncludeBottom).setVisibility(View.VISIBLE);
                    findViewById(R.id.llIncludeBottom).setAnimation(
                            AnimationUtils.loadAnimation(this, R.anim.bottom_top));
                }

答案 1 :(得分:1)

我要做的就是像以前一样制作动画视图,在onAnimationEnd中有一种无限循环:

 //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);
                    }
                });
    }
 }

我还没试过这个但是你可以试一试并告诉我