如何从屏幕外部向下滑动徽标



我正在尝试制作一个启动画面,其中徽标从屏幕顶部出现,并停在屏幕中央。

我在动画文件中使用 XML:

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true">
    <translate
        android:fromYDelta="0%p"
        android:toYDelta="75%p"
        android:duration="3000" />
</set>

而这个加载机芯的方法:

Animation fadein = AnimationUtils.loadAnimation(getActivity(), R.anim.fadein);
background.startAnimation(fadein);
background.setVisibility(ImageView.VISIBLE);
// load the animation
Animation animMoveDown = AnimationUtils.loadAnimation(getActivity(), R.anim.movedown);
// set animation listener
animMoveDown.setAnimationListener(this);
overlay.startAnimation(animMoveDown);

如何将徽标放在屏幕上方并使其滑到中心?可能吗?

谢谢大家,就我而言,XML是:

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true">
    <translate
        **android:fromYDelta="-50%p"**
        android:toYDelta="75%p"
        android:duration="3000" />
</set>

这是绝对可能的!你必须稍微玩一下,但你基本上只想从一个负的YDelta开始

这是我在应用程序中使用的内容,我需要在屏幕上开始图像的最底部。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="-84%"
        android:toYDelta="0%"
        android:duration="500" />
</set>

我想你会想要从 -100% 开始,到 50% 结束,所以试试这个:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="-100%"
        android:toYDelta="50%"
        android:duration="3000" />
</set>

同样简单地用负值定义android:fromYDelta

private fun buildSlideDownAndScaleAnimation(view: View): AnimationSet {
    val animSet = AnimationSet(true)
    animSet.fillAfter = false
    val duration: Long = 1000
    animSet.duration = duration
    animSet.interpolator = AccelerateDecelerateInterpolator()
    val translate = TranslateAnimation(0f, 0f, -1000f, 0f)
    animSet.addAnimation(translate)
    val scale = ScaleAnimation(0f,
                               1f,
                               0f,
                               1f,
                               ScaleAnimation.RELATIVE_TO_SELF,
                               .5f,
                               ScaleAnimation.RELATIVE_TO_SELF,
                               .5f)
    animSet.addAnimation(scale)
    val alphaAnimation = AlphaAnimation(0f, 1f)
    alphaAnimation.startOffset = duration / 3
    animSet.addAnimation(alphaAnimation)
    return animSet
}

最新更新