gpt4 book ai didi

android - Android 中的动画按钮按下/点击

转载 作者:太空狗 更新时间:2023-10-29 16:40:05 47 4
gpt4 key购买 nike

我正在尝试创建一个按钮点击动画,例如按下时按钮会缩小一点,松开时会缩小。如果您只是轻按,就会将按下和释放串在一起。

我设置了一个 onTouchListener 和一对 XML 定义的 AnimatorSet,一个用于新闻,一个用于发布。在 ACTION_DOWN 上运行新闻,在 ACTION_UPACTION_CANCEL 上运行发布。当您按住按钮然后稍后松开时,这会很好地工作。但是如果快速点击,释放动画会在按下完成之前触发,而且通常结果根本没有动画。

我希望我可以使用 AnimatorSet 的顺序功能将释放动画粘贴到可能已经运行的按下动画的末尾,但没有成功。我确信我可以用回调来组装一些东西,但这看起来很乱。

最好的方法是什么?谢谢!

最佳答案

我构建了一个示例 Button 类,用于缓冲动画并根据您的需要在队列中执行它们:

public class AnimationButton extends Button 
{
private List<Animation> mAnimationBuffer = new ArrayList<Animation>();;
private boolean mIsAnimating;

public AnimationButton(Context context)
{
super(context);

}

public AnimationButton(Context context, AttributeSet attrs)
{
super(context, attrs);

}

public AnimationButton(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);

}


@Override
public boolean onTouchEvent(MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
generateAnimation(1, 0.75f);
triggerNextAnimation();
}
else if (event.getAction() == MotionEvent.ACTION_CANCEL || event.getAction() == MotionEvent.ACTION_UP)
{
generateAnimation(0.75f, 1);
triggerNextAnimation();
}

return super.onTouchEvent(event);
}

private void generateAnimation(float from, float to)
{
ScaleAnimation scaleAnimation = new ScaleAnimation(from, to, from, to);
scaleAnimation.setFillAfter(true);
scaleAnimation.setDuration(500);
scaleAnimation.setAnimationListener(new ScaleAnimation.AnimationListener()
{
@Override
public void onAnimationStart(Animation animation) { }

@Override
public void onAnimationRepeat(Animation animation) { }

@Override
public void onAnimationEnd(Animation animation)
{
mIsAnimating = false;
triggerNextAnimation();
}
});

mAnimationBuffer.add(scaleAnimation);
}

private void triggerNextAnimation()
{
if (mAnimationBuffer.size() > 0 && !mIsAnimating)
{
mIsAnimating = true;
Animation currAnimation = mAnimationBuffer.get(0);
mAnimationBuffer.remove(0);

startAnimation(currAnimation);
}
}

}

希望这有帮助:)

关于android - Android 中的动画按钮按下/点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19261535/

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