【问题标题】:Android How to achieve pulsating circle animation around image viewAndroid如何实现围绕图像视图的脉动圆形动画
【发布时间】:2015-11-12 12:24:03
【问题描述】:

我希望实现类似于此的动画:

https://dribbble.com/shots/1767235-Rizon-Location-animation

,并且在中间的圆圈中有一个图像视图。

我知道将使用缩放动画,我在我的圆形图像视图上使用它:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:repeatMode="reverse"
    android:toXScale="0.5"
    android:toYScale="0.5" />

这会导致图像跳动,但是如何像上面的动画一样显示图像周围的环并为其设置动画?任何提示都会有所帮助。

谢谢!

【问题讨论】:

    标签: android animation scaleanimation


    【解决方案1】:

    重写 onDraw 方法并为您的按钮绘制第一个圆圈,创建一个布尔变量来控制您的按钮何时会脉冲,何时不会。最后以 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();
    }
    

    【讨论】:

    • 你在Util.adjustAlpha(mColor, 0.4f)做什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多