gpt4 book ai didi

android - Android中的脉动按钮动画

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:49:31 25 4
gpt4 key购买 nike

我正在使用语音识别应用程序,我想让我的播放/停止按钮在录音时“脉冲”。像这样:

enter image description here

我尝试制作一个 ScaleAnimation,使按钮变大,但当然,它会使所有按钮变大。

   public static ObjectAnimator pulseAnimation(ImageView target){

ObjectAnimator scaleDown = ObjectAnimator.ofPropertyValuesHolder(target,
PropertyValuesHolder.ofFloat("scaleX", 1.1f),
PropertyValuesHolder.ofFloat("scaleY", 1.1f));
scaleDown.setDuration(310);
scaleDown.setRepeatCount(ObjectAnimator.INFINITE);
scaleDown.setRepeatMode(ObjectAnimator.REVERSE);

return scaleDown;
}

所以这个想法是实现类似的东西,但只是在实际按钮后面有一个 alpha。我想知道在我的按钮后面添加第二个“Alpha 按钮”以使其增长并实现此效果之前,是否可以使用 alpha 动画或其他方式执行此操作。

最佳答案

终于找到解决办法了!我重写了 onDraw 方法并为我的按钮绘制了第一个圆圈,当我的 bool 值为真时。我以 alpha 作为背景绘制了第二个圆圈。制作脉动效果:

 @Override
protected void onDraw(Canvas canvas) {

int w = getMeasuredWidth();
int h = getMeasuredHeight();
mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mCirclePaint.setColor(mColor);
mBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mBackgroundPaint.setColor(Util.adjustAlpha(mColor, 0.4f));
//Draw circle
canvas.drawCircle(w/2, h/2, MIN_RADIUS_VALUE , mCirclePaint);
if (mAnimationOn) {
if (mRadius >= MAX_RADIUS_VALUE)
mPaintGoBack = true;
else if(mRadius <= MIN_RADIUS_VALUE)
mPaintGoBack = false;
//Draw pulsating shadow
canvas.drawCircle(w / 2, h / 2, mRadius, mBackgroundPaint);
mRadius = mPaintGoBack ? (mRadius - 0.5f) : (mRadius + 0.5f);
invalidate();
}

super.onDraw(canvas);
}
public void animateButton(boolean animate){
if (!animate)
mRadius = MIN_RADIUS_VALUE;
mAnimationOn = animate;
invalidate();
}

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

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