ElasticTabIndicatorInterpolator.smali
.class Lcom/google/android/material/tabs/ElasticTabIndicatorInterpolator;
.super Lcom/google/android/material/tabs/TabIndicatorInterpolator;
.source "ElasticTabIndicatorInterpolator.java"
# direct methods
.method constructor <init>()V
.registers 1
.line 32
invoke-direct {p0}, Lcom/google/android/material/tabs/TabIndicatorInterpolator;-><init>()V
return-void
.end method
.method private static accInterp(F)F
.registers 5
float-to-double v0, p0
const-wide v2, 0x400921fb54442d18L # Math.PI
mul-double/2addr v0, v2
const-wide/high16 v2, 0x4000000000000000L # 2.0
div-double/2addr v0, v2
.line 43
invoke-static {v0, v1}, Ljava/lang/Math;->cos(D)D
move-result-wide v0
const-wide/high16 v2, 0x3ff0000000000000L # 1.0
sub-double/2addr v2, v0
double-to-float p0, v2
return p0
.end method
.method private static decInterp(F)F
.registers 5
float-to-double v0, p0
const-wide v2, 0x400921fb54442d18L # Math.PI
mul-double/2addr v0, v2
const-wide/high16 v2, 0x4000000000000000L # 2.0
div-double/2addr v0, v2
.line 37
invoke-static {v0, v1}, Ljava/lang/Math;->sin(D)D
move-result-wide v0
double-to-float p0, v0
return p0
.end method
# virtual methods
.method setIndicatorBoundsForOffset(Lcom/google/android/material/tabs/TabLayout;Landroid/view/View;Landroid/view/View;FLandroid/graphics/drawable/Drawable;)V
.registers 8
.line 55
invoke-static {p1, p2}, Lcom/google/android/material/tabs/ElasticTabIndicatorInterpolator;->calculateIndicatorWidthForTab(Lcom/google/android/material/tabs/TabLayout;Landroid/view/View;)Landroid/graphics/RectF;
move-result-object p2
.line 56
invoke-static {p1, p3}, Lcom/google/android/material/tabs/ElasticTabIndicatorInterpolator;->calculateIndicatorWidthForTab(Lcom/google/android/material/tabs/TabLayout;Landroid/view/View;)Landroid/graphics/RectF;
move-result-object p1
.line 61
iget p3, p2, Landroid/graphics/RectF;->left:F
iget v0, p1, Landroid/graphics/RectF;->left:F
cmpg-float p3, p3, v0
if-gez p3, :cond_12
const/4 p3, 0x1
goto :goto_13
:cond_12
const/4 p3, 0x0
:goto_13
if-eqz p3, :cond_1e
.line 67
invoke-static {p4}, Lcom/google/android/material/tabs/ElasticTabIndicatorInterpolator;->accInterp(F)F
move-result p3
.line 68
invoke-static {p4}, Lcom/google/android/material/tabs/ElasticTabIndicatorInterpolator;->decInterp(F)F
move-result p4
goto :goto_26
.line 70
:cond_1e
invoke-static {p4}, Lcom/google/android/material/tabs/ElasticTabIndicatorInterpolator;->decInterp(F)F
move-result p3
.line 71
invoke-static {p4}, Lcom/google/android/material/tabs/ElasticTabIndicatorInterpolator;->accInterp(F)F
move-result p4
.line 73
:goto_26
iget v0, p2, Landroid/graphics/RectF;->left:F
float-to-int v0, v0
iget v1, p1, Landroid/graphics/RectF;->left:F
float-to-int v1, v1
.line 74
invoke-static {v0, v1, p3}, Lcom/google/android/material/animation/AnimationUtils;->lerp(IIF)I
move-result p3
.line 75
invoke-virtual {p5}, Landroid/graphics/drawable/Drawable;->getBounds()Landroid/graphics/Rect;
move-result-object v0
iget v0, v0, Landroid/graphics/Rect;->top:I
iget p2, p2, Landroid/graphics/RectF;->right:F
float-to-int p2, p2
iget p1, p1, Landroid/graphics/RectF;->right:F
float-to-int p1, p1
.line 76
invoke-static {p2, p1, p4}, Lcom/google/android/material/animation/AnimationUtils;->lerp(IIF)I
move-result p1
.line 77
invoke-virtual {p5}, Landroid/graphics/drawable/Drawable;->getBounds()Landroid/graphics/Rect;
move-result-object p2
iget p2, p2, Landroid/graphics/Rect;->bottom:I
.line 73
invoke-virtual {p5, p3, v0, p1, p2}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V
return-void
.end method