ProgressDrawable.smali

.class public Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;
.super Lcom/scwang/smartrefresh/layout/internal/PaintDrawable;
.source "ProgressDrawable.java"

# interfaces
.implements Landroid/graphics/drawable/Animatable;
.implements Landroid/animation/ValueAnimator$AnimatorUpdateListener;


# instance fields
.field protected mHeight:I

.field protected mPath:Landroid/graphics/Path;

.field protected mProgressDegree:I

.field protected mValueAnimator:Landroid/animation/ValueAnimator;

.field protected mWidth:I


# direct methods
.method static constructor <clinit>()V
    .registers 1

    return-void
.end method

.method public constructor <init>()V
    .registers 4

    .line 25
    invoke-direct {p0}, Lcom/scwang/smartrefresh/layout/internal/PaintDrawable;-><init>()V

    .line 19
    const/4 v0, 0x0

    iput v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mWidth:I

    .line 20
    iput v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mHeight:I

    .line 21
    iput v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mProgressDegree:I

    .line 23
    new-instance v0, Landroid/graphics/Path;

    invoke-direct {v0}, Landroid/graphics/Path;-><init>()V

    iput-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mPath:Landroid/graphics/Path;

    .line 26
    const/4 v0, 0x2

    new-array v0, v0, [I

    fill-array-data v0, :array_36

    invoke-static {v0}, Landroid/animation/ValueAnimator;->ofInt([I)Landroid/animation/ValueAnimator;

    move-result-object v0

    iput-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    .line 27
    const-wide/16 v1, 0x2710

    invoke-virtual {v0, v1, v2}, Landroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/ValueAnimator;

    .line 28
    iget-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    const/4 v1, 0x0

    invoke-virtual {v0, v1}, Landroid/animation/ValueAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)V

    .line 29
    iget-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    const/4 v1, -0x1

    invoke-virtual {v0, v1}, Landroid/animation/ValueAnimator;->setRepeatCount(I)V

    .line 30
    iget-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    const/4 v1, 0x1

    invoke-virtual {v0, v1}, Landroid/animation/ValueAnimator;->setRepeatMode(I)V

    .line 31
    return-void

    nop

    :array_36
    .array-data 4
        0x1e
        0xe10
    .end array-data
.end method


# virtual methods
.method public draw(Landroid/graphics/Canvas;)V
    .registers 20
    .param p1, "canvas"    # Landroid/graphics/Canvas;

    .line 44
    move-object/from16 v0, p0

    move-object/from16 v1, p1

    move-object/from16 v2, p0

    .line 45
    .local v2, "drawable":Landroid/graphics/drawable/Drawable;
    invoke-virtual {v2}, Landroid/graphics/drawable/Drawable;->getBounds()Landroid/graphics/Rect;

    move-result-object v3

    .line 46
    .local v3, "bounds":Landroid/graphics/Rect;
    invoke-virtual {v3}, Landroid/graphics/Rect;->width()I

    move-result v4

    .line 47
    .local v4, "width":I
    invoke-virtual {v3}, Landroid/graphics/Rect;->height()I

    move-result v5

    .line 48
    .local v5, "height":I
    int-to-float v6, v4

    const/high16 v7, 0x41b00000    # 22.0f

    div-float/2addr v6, v7

    const/high16 v7, 0x3f800000    # 1.0f

    invoke-static {v7, v6}, Ljava/lang/Math;->max(FF)F

    move-result v6

    .line 50
    .local v6, "r":F
    iget v7, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mWidth:I

    const/high16 v8, 0x40000000    # 2.0f

    if-ne v7, v4, :cond_26

    iget v7, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mHeight:I

    if-eq v7, v5, :cond_60

    .line 51
    :cond_26
    iget-object v7, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mPath:Landroid/graphics/Path;

    invoke-virtual {v7}, Landroid/graphics/Path;->reset()V

    .line 52
    iget-object v7, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mPath:Landroid/graphics/Path;

    int-to-float v9, v4

    sub-float/2addr v9, v6

    int-to-float v10, v5

    div-float/2addr v10, v8

    sget-object v11, Landroid/graphics/Path$Direction;->CW:Landroid/graphics/Path$Direction;

    invoke-virtual {v7, v9, v10, v6, v11}, Landroid/graphics/Path;->addCircle(FFFLandroid/graphics/Path$Direction;)V

    .line 53
    iget-object v12, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mPath:Landroid/graphics/Path;

    int-to-float v7, v4

    const/high16 v9, 0x40a00000    # 5.0f

    mul-float v10, v6, v9

    sub-float v13, v7, v10

    int-to-float v7, v5

    div-float/2addr v7, v8

    sub-float v14, v7, v6

    int-to-float v7, v4

    sub-float v15, v7, v6

    int-to-float v7, v5

    div-float/2addr v7, v8

    add-float v16, v7, v6

    sget-object v17, Landroid/graphics/Path$Direction;->CW:Landroid/graphics/Path$Direction;

    invoke-virtual/range {v12 .. v17}, Landroid/graphics/Path;->addRect(FFFFLandroid/graphics/Path$Direction;)V

    .line 54
    iget-object v7, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mPath:Landroid/graphics/Path;

    int-to-float v10, v4

    mul-float v9, v9, v6

    sub-float/2addr v10, v9

    int-to-float v9, v5

    div-float/2addr v9, v8

    sget-object v11, Landroid/graphics/Path$Direction;->CW:Landroid/graphics/Path$Direction;

    invoke-virtual {v7, v10, v9, v6, v11}, Landroid/graphics/Path;->addCircle(FFFLandroid/graphics/Path$Direction;)V

    .line 55
    iput v4, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mWidth:I

    .line 56
    iput v5, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mHeight:I

    .line 59
    :cond_60
    invoke-virtual/range {p1 .. p1}, Landroid/graphics/Canvas;->save()I

    .line 60
    iget v7, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mProgressDegree:I

    int-to-float v7, v7

    int-to-float v9, v4

    div-float/2addr v9, v8

    int-to-float v10, v5

    div-float/2addr v10, v8

    invoke-virtual {v1, v7, v9, v10}, Landroid/graphics/Canvas;->rotate(FFF)V

    .line 61
    const/4 v7, 0x0

    .local v7, "i":I
    :goto_6e
    const/16 v9, 0xc

    if-ge v7, v9, :cond_8e

    .line 62
    iget-object v9, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mPaint:Landroid/graphics/Paint;

    add-int/lit8 v10, v7, 0x5

    mul-int/lit8 v10, v10, 0x11

    invoke-virtual {v9, v10}, Landroid/graphics/Paint;->setAlpha(I)V

    .line 63
    const/high16 v9, 0x41f00000    # 30.0f

    int-to-float v10, v4

    div-float/2addr v10, v8

    int-to-float v11, v5

    div-float/2addr v11, v8

    invoke-virtual {v1, v9, v10, v11}, Landroid/graphics/Canvas;->rotate(FFF)V

    .line 64
    iget-object v9, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mPath:Landroid/graphics/Path;

    iget-object v10, v0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mPaint:Landroid/graphics/Paint;

    invoke-virtual {v1, v9, v10}, Landroid/graphics/Canvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V

    .line 61
    add-int/lit8 v7, v7, 0x1

    goto :goto_6e

    .line 66
    .end local v7    # "i":I
    :cond_8e
    invoke-virtual/range {p1 .. p1}, Landroid/graphics/Canvas;->restore()V

    .line 67
    return-void
.end method

.method public isRunning()Z
    .registers 2

    .line 90
    iget-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->isRunning()Z

    move-result v0

    return v0
.end method

.method public onAnimationUpdate(Landroid/animation/ValueAnimator;)V
    .registers 4
    .param p1, "animation"    # Landroid/animation/ValueAnimator;

    .line 35
    invoke-virtual {p1}, Landroid/animation/ValueAnimator;->getAnimatedValue()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v0

    .line 36
    .local v0, "value":I
    div-int/lit8 v1, v0, 0x1e

    mul-int/lit8 v1, v1, 0x1e

    iput v1, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mProgressDegree:I

    .line 37
    move-object v1, p0

    .line 38
    .local v1, "drawable":Landroid/graphics/drawable/Drawable;
    invoke-virtual {v1}, Landroid/graphics/drawable/Drawable;->invalidateSelf()V

    .line 39
    return-void
.end method

.method public start()V
    .registers 2

    .line 72
    iget-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->isRunning()Z

    move-result v0

    if-nez v0, :cond_12

    .line 73
    iget-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    invoke-virtual {v0, p0}, Landroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V

    .line 74
    iget-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->start()V

    .line 76
    :cond_12
    return-void
.end method

.method public stop()V
    .registers 3

    .line 80
    iget-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    invoke-virtual {v0}, Landroid/animation/ValueAnimator;->isRunning()Z

    move-result v0

    if-eqz v0, :cond_17

    .line 81
    iget-object v0, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    .line 82
    .local v0, "animator":Landroid/animation/Animator;
    invoke-virtual {v0}, Landroid/animation/Animator;->removeAllListeners()V

    .line 83
    iget-object v1, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    invoke-virtual {v1}, Landroid/animation/ValueAnimator;->removeAllUpdateListeners()V

    .line 84
    iget-object v1, p0, Lcom/scwang/smartrefresh/layout/internal/ProgressDrawable;->mValueAnimator:Landroid/animation/ValueAnimator;

    invoke-virtual {v1}, Landroid/animation/ValueAnimator;->cancel()V

    .line 86
    .end local v0    # "animator":Landroid/animation/Animator;
    :cond_17
    return-void
.end method