android - 翻译动画后如何移动按钮?

标签 android animation button layout translate-animation

我正在向左移动一个居中的水平按钮(相对布局)。播放翻译动画 (onAnimationEnd) 后,我设置布局参数以删除 CENTER_HORIZONTAL 规则。现在有两种可能:

1) 如果我设置 fillAfter(true) 按钮播放动画,然后离开屏幕一半;

2) 如果我设置 fillAfter(false) 按钮播放动画(因此它向左移动),然后闪烁一毫秒。那是因为它会回到原来的位置,直到我调用 setLayoutParams 并将其正确设置到左侧。但它会闪烁,这并不好。

如何避免闪光?

代码

TranslateAnimation translateAnimation = new TranslateAnimation(0, LEFT_TRANSLATION, 0, 0);

translateAnimation.setDuration(1000);
translateAnimation.setFillAfter(true);

button1.startAnimation(translateAnimation);

translateAnimation.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
    }

    @Override
    public void onAnimationEnd(Animation animation) {

        RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) button1.getLayoutParams();
        lp.removeRule(RelativeLayout.CENTER_HORIZONTAL);
        button1.setLayoutParams(lp);

    }

    @Override
    public void onAnimationRepeat(Animation animation) {
    }
});

最佳答案

已找到解决方案!

使用

button.clearAnimation();

在 onAnimationEnd() 中像这样:

@Override
public void onAnimationEnd(Animation animation) {

    RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) button1.getLayoutParams();
    lp.removeRule(RelativeLayout.CENTER_HORIZONTAL);
    button1.setLayoutParams(lp);

    button1.clearAnimation();
}

来源:http://www.helloandroid.com/tutorials/solving-advanced-animation-problems

关于android - 翻译动画后如何移动按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34705507/

相关文章:

ios - Swift - 如何制作自定义幻灯片动画?

css - 水平菜单,不是整个框在 CSS 中可点击

javascript - 1 个带有 1 个输入字段和 2 个按钮的表单;需要根据使用的按钮更改输入名称

android - 将对象的 ArrayList 转换为 JSON 以保存到 SQLITE 中

android - Android 中具有分辨率参数的相机 Intent

Android ScaleAnimation 似乎忽略了枢轴

java - 单击按钮并更改另一个按钮的背景颜色

java - 从 android 保存 csv。共享时文件无标题

android - 使用 Java 或 Adob​​e AIR 或 Titanium 或 PhoneGap 为 Android 开发?

javascript - SVG 动画线条不稳定的行为