gpt4 book ai didi

Android:翻译动画后按钮不起作用

转载 作者:行者123 更新时间:2023-11-29 01:29:48 26 4
gpt4 key购买 nike

我创建了一个按钮,只要按下它我就想向下翻译。我在 anim 文件夹中创建了一个 xml 文件来设置向下翻译。

翻译有效,但按钮会在动画结束后恢复到原来的位置。为了解决这个问题,我使用了代码:

translationDown.setFillAfter(true);
translationDown.setFillEnabled(true);

虽然按钮在完成平移动画后保持在其位置,但它停止工作并且在再次按下时不会从该位置向下平移。

如何让按钮在每次按下时平移?

编辑:

根据要求,这是翻译代码,存储在translate_down.xml中:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate
android:fromYDelta="0"
android:toYDelta="300"
android:duration="250"
/>

</set>

这是我的 java 文件中的代码:

final Animation slideDown = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.translate_down);
relativeLayoutButtons.startAnimation(slideDown);

最佳答案

这是因为动画使用了您的 View (即您的按钮)的表示(位图副本)。当动画正在进行时,位图复制不是您的 View 正在被翻译。动画完成后,您的实际 View 并未移动。

使用 translationDown.setFillAfter(true) 和 translationDown.setFillEnabled(true) 将无济于事,因为它们用于动画链接,即如果您想使用另一个动画对象继续动画。

您需要做的是在动画之后设置 View 的位置属性。这是如何实现的示例:

final Animation slideDown = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.translate_down);
relativeLayoutButtons.startAnimation(slideDown);


relativeLayoutButtons.getAnimation().setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {

// Set the position properties of your view here.
// e.g.
relativeLayoutButtons.setTranslationX(50);
relativeLayoutButtons.setTranslationY(50);
}

@Override
public void onAnimationRepeat(Animation animation) {

}
});

关于Android:翻译动画后按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31822542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com