脉动按钮动画的android [英] Pulsating button animation android
问题描述
现在即时通讯与语音识别应用工作,我想让我的播放/停止按钮把脉时,它的记录。事情是这样的:
Right now im working with a Voice recognition application and I want to make my play/stop button "pulse" when it's recording. Something like this:
我试图做一个ScaleAnimation,做做按钮增长,但当然,它使所有成长的按钮。
I have tried to make a ScaleAnimation, doing the button grow, but of course, it makes grow all the button.
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;
}
这样的想法是实现类似的东西,但只是实际的按钮后面的字母。我想知道,如果有可能与奥飞动漫还是有得做之前添加第二个阿尔法按钮我的按钮后面,使其成长,达到这种效果。
So the idea is achieve something like that but just with a alpha behind the actual button. I want to know if it's possible to do this with an alpha animation or something before add a second "Alpha Button" behind my button to make it grow and achieve this effect.
感谢你这么多提前!
推荐答案
我终于找到了解决办法!我overrided该方法的onDraw并绘制第一个圆我的按钮,当我的布尔是真实的。我画一个圆圈内有一个字母作为背景。制作一个脉动效果:
Finally I found the solution! I overrided the onDraw method and draw a first circle for my button and, when my boolean is true. I draw a second circle with an alpha as a background. Making a pulsating effect:
@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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!