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