PercentLayoutHelper.smali
.class public Landroidx/percentlayout/widget/PercentLayoutHelper;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;,
Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;,
Landroidx/percentlayout/widget/PercentLayoutHelper$PercentMarginLayoutParams;
}
.end annotation
.annotation runtime Ljava/lang/Deprecated;
.end annotation
# static fields
.field private static final DEBUG:Z = false
.field private static final TAG:Ljava/lang/String; = "PercentLayout"
.field private static final VERBOSE:Z = false
# instance fields
.field private final mHost:Landroid/view/ViewGroup;
# direct methods
.method public constructor <init>(Landroid/view/ViewGroup;)V
.registers 3
.line 133
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
if-eqz p1, :cond_8
.line 137
iput-object p1, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
return-void
.line 135
:cond_8
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string v0, "host must be non-null"
invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public static fetchWidthAndHeight(Landroid/view/ViewGroup$LayoutParams;Landroid/content/res/TypedArray;II)V
.registers 5
const/4 v0, 0x0
.line 147
invoke-virtual {p1, p2, v0}, Landroid/content/res/TypedArray;->getLayoutDimension(II)I
move-result p2
iput p2, p0, Landroid/view/ViewGroup$LayoutParams;->width:I
.line 148
invoke-virtual {p1, p3, v0}, Landroid/content/res/TypedArray;->getLayoutDimension(II)I
move-result p1
iput p1, p0, Landroid/view/ViewGroup$LayoutParams;->height:I
return-void
.end method
.method public static getPercentLayoutInfo(Landroid/content/Context;Landroid/util/AttributeSet;)Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
.registers 6
.line 200
sget-object v0, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout:[I
invoke-virtual {p0, p1, v0}, Landroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;
move-result-object p0
.line 201
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_widthPercent:I
const/high16 v0, -0x40800000 # -1.0f
const/4 v1, 0x1
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v2, p1, v0
if-eqz v2, :cond_1b
.line 207
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 208
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->widthPercent:F
goto :goto_1c
:cond_1b
const/4 v2, 0x0
.line 210
:goto_1c
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_heightPercent:I
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v3, p1, v0
if-eqz v3, :cond_30
if-eqz v2, :cond_29
goto :goto_2e
.line 215
:cond_29
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 216
:goto_2e
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->heightPercent:F
.line 218
:cond_30
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_marginPercent:I
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v3, p1, v0
if-eqz v3, :cond_4a
if-eqz v2, :cond_3d
goto :goto_42
.line 223
:cond_3d
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 224
:goto_42
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->leftMarginPercent:F
.line 225
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->topMarginPercent:F
.line 226
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->rightMarginPercent:F
.line 227
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->bottomMarginPercent:F
.line 229
:cond_4a
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_marginLeftPercent:I
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v3, p1, v0
if-eqz v3, :cond_5e
if-eqz v2, :cond_57
goto :goto_5c
.line 235
:cond_57
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 236
:goto_5c
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->leftMarginPercent:F
.line 238
:cond_5e
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_marginTopPercent:I
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v3, p1, v0
if-eqz v3, :cond_72
if-eqz v2, :cond_6b
goto :goto_70
.line 244
:cond_6b
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 245
:goto_70
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->topMarginPercent:F
.line 247
:cond_72
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_marginRightPercent:I
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v3, p1, v0
if-eqz v3, :cond_86
if-eqz v2, :cond_7f
goto :goto_84
.line 253
:cond_7f
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 254
:goto_84
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->rightMarginPercent:F
.line 256
:cond_86
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_marginBottomPercent:I
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v3, p1, v0
if-eqz v3, :cond_9a
if-eqz v2, :cond_93
goto :goto_98
.line 262
:cond_93
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 263
:goto_98
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->bottomMarginPercent:F
.line 265
:cond_9a
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_marginStartPercent:I
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v3, p1, v0
if-eqz v3, :cond_ae
if-eqz v2, :cond_a7
goto :goto_ac
.line 271
:cond_a7
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 272
:goto_ac
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->startMarginPercent:F
.line 274
:cond_ae
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_marginEndPercent:I
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v3, p1, v0
if-eqz v3, :cond_c2
if-eqz v2, :cond_bb
goto :goto_c0
.line 280
:cond_bb
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 281
:goto_c0
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->endMarginPercent:F
.line 284
:cond_c2
sget p1, Landroidx/percentlayout/R$styleable;->PercentLayout_Layout_layout_aspectRatio:I
invoke-virtual {p0, p1, v1, v1, v0}, Landroid/content/res/TypedArray;->getFraction(IIIF)F
move-result p1
cmpl-float v0, p1, v0
if-eqz v0, :cond_d6
if-eqz v2, :cond_cf
goto :goto_d4
.line 289
:cond_cf
new-instance v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
invoke-direct {v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;-><init>()V
.line 290
:goto_d4
iput p1, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->aspectRatio:F
.line 293
:cond_d6
invoke-virtual {p0}, Landroid/content/res/TypedArray;->recycle()V
return-object v2
.end method
.method private static shouldHandleMeasuredHeightTooSmall(Landroid/view/View;Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;)Z
.registers 3
.line 379
invoke-virtual {p0}, Landroid/view/View;->getMeasuredHeightAndState()I
move-result p0
const/high16 v0, -0x1000000
and-int/2addr p0, v0
const/high16 v0, 0x1000000
if-ne p0, v0, :cond_1b
.line 380
iget p0, p1, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->heightPercent:F
const/4 v0, 0x0
cmpl-float p0, p0, v0
if-ltz p0, :cond_1b
iget-object p0, p1, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->mPreservedParams:Landroidx/percentlayout/widget/PercentLayoutHelper$PercentMarginLayoutParams;
iget p0, p0, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentMarginLayoutParams;->height:I
const/4 p1, -0x2
if-ne p0, p1, :cond_1b
const/4 p0, 0x1
return p0
:cond_1b
const/4 p0, 0x0
return p0
.end method
.method private static shouldHandleMeasuredWidthTooSmall(Landroid/view/View;Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;)Z
.registers 3
.line 373
invoke-virtual {p0}, Landroid/view/View;->getMeasuredWidthAndState()I
move-result p0
const/high16 v0, -0x1000000
and-int/2addr p0, v0
const/high16 v0, 0x1000000
if-ne p0, v0, :cond_1b
.line 374
iget p0, p1, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->widthPercent:F
const/4 v0, 0x0
cmpl-float p0, p0, v0
if-ltz p0, :cond_1b
iget-object p0, p1, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->mPreservedParams:Landroidx/percentlayout/widget/PercentLayoutHelper$PercentMarginLayoutParams;
iget p0, p0, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentMarginLayoutParams;->width:I
const/4 p1, -0x2
if-ne p0, p1, :cond_1b
const/4 p0, 0x1
return p0
:cond_1b
const/4 p0, 0x0
return p0
.end method
# virtual methods
.method public adjustChildren(II)V
.registers 9
.line 165
invoke-static {p1}, Landroid/view/View$MeasureSpec;->getSize(I)I
move-result p1
iget-object v0, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
invoke-virtual {v0}, Landroid/view/ViewGroup;->getPaddingLeft()I
move-result v0
sub-int/2addr p1, v0
iget-object v0, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
.line 166
invoke-virtual {v0}, Landroid/view/ViewGroup;->getPaddingRight()I
move-result v0
sub-int/2addr p1, v0
.line 167
invoke-static {p2}, Landroid/view/View$MeasureSpec;->getSize(I)I
move-result p2
iget-object v0, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
invoke-virtual {v0}, Landroid/view/ViewGroup;->getPaddingTop()I
move-result v0
sub-int/2addr p2, v0
iget-object v0, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
.line 168
invoke-virtual {v0}, Landroid/view/ViewGroup;->getPaddingBottom()I
move-result v0
sub-int/2addr p2, v0
.line 169
iget-object v0, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
invoke-virtual {v0}, Landroid/view/ViewGroup;->getChildCount()I
move-result v0
const/4 v1, 0x0
:goto_2b
if-ge v1, v0, :cond_54
.line 170
iget-object v2, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
invoke-virtual {v2, v1}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;
move-result-object v2
.line 171
invoke-virtual {v2}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams;
move-result-object v3
.line 175
instance-of v4, v3, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;
if-eqz v4, :cond_51
.line 176
move-object v4, v3
check-cast v4, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;
.line 177
invoke-interface {v4}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;->getPercentLayoutInfo()Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
move-result-object v4
if-eqz v4, :cond_51
.line 182
instance-of v5, v3, Landroid/view/ViewGroup$MarginLayoutParams;
if-eqz v5, :cond_4e
.line 183
check-cast v3, Landroid/view/ViewGroup$MarginLayoutParams;
invoke-virtual {v4, v2, v3, p1, p2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->fillMarginLayoutParams(Landroid/view/View;Landroid/view/ViewGroup$MarginLayoutParams;II)V
goto :goto_51
.line 186
:cond_4e
invoke-virtual {v4, v3, p1, p2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->fillLayoutParams(Landroid/view/ViewGroup$LayoutParams;II)V
:cond_51
:goto_51
add-int/lit8 v1, v1, 0x1
goto :goto_2b
:cond_54
return-void
.end method
.method public handleMeasuredStateTooSmall()Z
.registers 10
.line 345
iget-object v0, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
invoke-virtual {v0}, Landroid/view/ViewGroup;->getChildCount()I
move-result v0
const/4 v1, 0x0
const/4 v2, 0x0
:goto_8
if-ge v1, v0, :cond_38
.line 346
iget-object v3, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
invoke-virtual {v3, v1}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;
move-result-object v3
.line 347
invoke-virtual {v3}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams;
move-result-object v4
.line 351
instance-of v5, v4, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;
const/4 v6, 0x1
if-eqz v5, :cond_35
.line 352
move-object v5, v4
check-cast v5, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;
.line 353
invoke-interface {v5}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;->getPercentLayoutInfo()Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
move-result-object v5
if-eqz v5, :cond_35
.line 355
invoke-static {v3, v5}, Landroidx/percentlayout/widget/PercentLayoutHelper;->shouldHandleMeasuredWidthTooSmall(Landroid/view/View;Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;)Z
move-result v7
const/4 v8, -0x2
if-eqz v7, :cond_2c
.line 357
iput v8, v4, Landroid/view/ViewGroup$LayoutParams;->width:I
const/4 v2, 0x1
.line 359
:cond_2c
invoke-static {v3, v5}, Landroidx/percentlayout/widget/PercentLayoutHelper;->shouldHandleMeasuredHeightTooSmall(Landroid/view/View;Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;)Z
move-result v3
if-eqz v3, :cond_35
.line 361
iput v8, v4, Landroid/view/ViewGroup$LayoutParams;->height:I
const/4 v2, 0x1
:cond_35
add-int/lit8 v1, v1, 0x1
goto :goto_8
:cond_38
return v2
.end method
.method public restoreOriginalParams()V
.registers 6
.line 306
iget-object v0, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
invoke-virtual {v0}, Landroid/view/ViewGroup;->getChildCount()I
move-result v0
const/4 v1, 0x0
:goto_7
if-ge v1, v0, :cond_30
.line 307
iget-object v2, p0, Landroidx/percentlayout/widget/PercentLayoutHelper;->mHost:Landroid/view/ViewGroup;
invoke-virtual {v2, v1}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;
move-result-object v2
.line 308
invoke-virtual {v2}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams;
move-result-object v2
.line 312
instance-of v3, v2, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;
if-eqz v3, :cond_2d
.line 313
move-object v3, v2
check-cast v3, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;
.line 314
invoke-interface {v3}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutParams;->getPercentLayoutInfo()Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;
move-result-object v3
if-eqz v3, :cond_2d
.line 319
instance-of v4, v2, Landroid/view/ViewGroup$MarginLayoutParams;
if-eqz v4, :cond_2a
.line 320
check-cast v2, Landroid/view/ViewGroup$MarginLayoutParams;
invoke-virtual {v3, v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->restoreMarginLayoutParams(Landroid/view/ViewGroup$MarginLayoutParams;)V
goto :goto_2d
.line 322
:cond_2a
invoke-virtual {v3, v2}, Landroidx/percentlayout/widget/PercentLayoutHelper$PercentLayoutInfo;->restoreLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V
:cond_2d
:goto_2d
add-int/lit8 v1, v1, 0x1
goto :goto_7
:cond_30
return-void
.end method