mirror of
https://github.com/VibedByKaKi/alexandroid.git
synced 2026-11-13 17:37:16 +01:00
116 lines
6.7 KiB
Java
116 lines
6.7 KiB
Java
package com.google.android.material.carousel;
|
|
|
|
import android.content.Context;
|
|
import androidx.annotation.NonNull;
|
|
import com.google.android.material.R;
|
|
import com.google.android.material.carousel.KeylineState;
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
/* loaded from: classes7.dex */
|
|
final class CarouselStrategyHelper {
|
|
private CarouselStrategyHelper() {
|
|
}
|
|
|
|
public static float addEnd(float f, float f2, int i) {
|
|
return (Math.max(0, i - 1) * f2) + f;
|
|
}
|
|
|
|
public static float addStart(float f, float f2, int i) {
|
|
return i > 0 ? (f2 / 2.0f) + f : f;
|
|
}
|
|
|
|
public static KeylineState createCenterAlignedKeylineState(@NonNull Context context, float f, int i, @NonNull Arrangement arrangement) {
|
|
float f2;
|
|
float f3;
|
|
float min = Math.min(getExtraSmallSize(context) + f, arrangement.largeSize);
|
|
float f4 = min / 2.0f;
|
|
float f5 = 0.0f - f4;
|
|
float addStart = addStart(0.0f, arrangement.smallSize, arrangement.smallCount);
|
|
float updateCurPosition = updateCurPosition(0.0f, addEnd(addStart, arrangement.smallSize, (int) Math.floor(arrangement.smallCount / 2.0f)), arrangement.smallSize, arrangement.smallCount);
|
|
float addStart2 = addStart(updateCurPosition, arrangement.mediumSize, arrangement.mediumCount);
|
|
float updateCurPosition2 = updateCurPosition(updateCurPosition, addEnd(addStart2, arrangement.mediumSize, (int) Math.floor(arrangement.mediumCount / 2.0f)), arrangement.mediumSize, arrangement.mediumCount);
|
|
float addStart3 = addStart(updateCurPosition2, arrangement.largeSize, arrangement.largeCount);
|
|
float updateCurPosition3 = updateCurPosition(updateCurPosition2, addEnd(addStart3, arrangement.largeSize, arrangement.largeCount), arrangement.largeSize, arrangement.largeCount);
|
|
float addStart4 = addStart(updateCurPosition3, arrangement.mediumSize, arrangement.mediumCount);
|
|
float addStart5 = addStart(updateCurPosition(updateCurPosition3, addEnd(addStart4, arrangement.mediumSize, (int) Math.ceil(arrangement.mediumCount / 2.0f)), arrangement.mediumSize, arrangement.mediumCount), arrangement.smallSize, arrangement.smallCount);
|
|
float f6 = i + f4;
|
|
float childMaskPercentage = CarouselStrategy.getChildMaskPercentage(min, arrangement.largeSize, f);
|
|
float childMaskPercentage2 = CarouselStrategy.getChildMaskPercentage(arrangement.smallSize, arrangement.largeSize, f);
|
|
float childMaskPercentage3 = CarouselStrategy.getChildMaskPercentage(arrangement.mediumSize, arrangement.largeSize, f);
|
|
KeylineState.Builder addAnchorKeyline = new KeylineState.Builder(arrangement.largeSize, i).addAnchorKeyline(f5, childMaskPercentage, min);
|
|
if (arrangement.smallCount > 0) {
|
|
f2 = 2.0f;
|
|
f3 = childMaskPercentage;
|
|
addAnchorKeyline.addKeylineRange(addStart, childMaskPercentage2, arrangement.smallSize, (int) Math.floor(r7 / 2.0f));
|
|
} else {
|
|
f2 = 2.0f;
|
|
f3 = childMaskPercentage;
|
|
}
|
|
if (arrangement.mediumCount > 0) {
|
|
addAnchorKeyline.addKeylineRange(addStart2, childMaskPercentage3, arrangement.mediumSize, (int) Math.floor(r4 / f2));
|
|
}
|
|
addAnchorKeyline.addKeylineRange(addStart3, 0.0f, arrangement.largeSize, arrangement.largeCount, true);
|
|
if (arrangement.mediumCount > 0) {
|
|
addAnchorKeyline.addKeylineRange(addStart4, childMaskPercentage3, arrangement.mediumSize, (int) Math.ceil(r4 / f2));
|
|
}
|
|
if (arrangement.smallCount > 0) {
|
|
addAnchorKeyline.addKeylineRange(addStart5, childMaskPercentage2, arrangement.smallSize, (int) Math.ceil(r0 / f2));
|
|
}
|
|
addAnchorKeyline.addAnchorKeyline(f6, f3, min);
|
|
return addAnchorKeyline.build();
|
|
}
|
|
|
|
public static KeylineState createKeylineState(@NonNull Context context, float f, int i, @NonNull Arrangement arrangement, int i2) {
|
|
return i2 == 1 ? createCenterAlignedKeylineState(context, f, i, arrangement) : createLeftAlignedKeylineState(context, f, i, arrangement);
|
|
}
|
|
|
|
public static KeylineState createLeftAlignedKeylineState(@NonNull Context context, float f, int i, @NonNull Arrangement arrangement) {
|
|
float min = Math.min(getExtraSmallSize(context) + f, arrangement.largeSize);
|
|
float f2 = min / 2.0f;
|
|
float f3 = 0.0f - f2;
|
|
float addStart = addStart(0.0f, arrangement.largeSize, arrangement.largeCount);
|
|
float updateCurPosition = updateCurPosition(0.0f, addEnd(addStart, arrangement.largeSize, arrangement.largeCount), arrangement.largeSize, arrangement.largeCount);
|
|
float addStart2 = addStart(updateCurPosition, arrangement.mediumSize, arrangement.mediumCount);
|
|
float addStart3 = addStart(updateCurPosition(updateCurPosition, addStart2, arrangement.mediumSize, arrangement.mediumCount), arrangement.smallSize, arrangement.smallCount);
|
|
float f4 = i + f2;
|
|
float childMaskPercentage = CarouselStrategy.getChildMaskPercentage(min, arrangement.largeSize, f);
|
|
float childMaskPercentage2 = CarouselStrategy.getChildMaskPercentage(arrangement.smallSize, arrangement.largeSize, f);
|
|
float childMaskPercentage3 = CarouselStrategy.getChildMaskPercentage(arrangement.mediumSize, arrangement.largeSize, f);
|
|
KeylineState.Builder addKeylineRange = new KeylineState.Builder(arrangement.largeSize, i).addAnchorKeyline(f3, childMaskPercentage, min).addKeylineRange(addStart, 0.0f, arrangement.largeSize, arrangement.largeCount, true);
|
|
if (arrangement.mediumCount > 0) {
|
|
addKeylineRange.addKeyline(addStart2, childMaskPercentage3, arrangement.mediumSize);
|
|
}
|
|
int i2 = arrangement.smallCount;
|
|
if (i2 > 0) {
|
|
addKeylineRange.addKeylineRange(addStart3, childMaskPercentage2, arrangement.smallSize, i2);
|
|
}
|
|
addKeylineRange.addAnchorKeyline(f4, childMaskPercentage, min);
|
|
return addKeylineRange.build();
|
|
}
|
|
|
|
public static float getExtraSmallSize(@NonNull Context context) {
|
|
return context.getResources().getDimension(R.dimen.m3_carousel_gone_size);
|
|
}
|
|
|
|
public static float getSmallSizeMax(@NonNull Context context) {
|
|
return context.getResources().getDimension(R.dimen.m3_carousel_small_item_size_max);
|
|
}
|
|
|
|
public static float getSmallSizeMin(@NonNull Context context) {
|
|
return context.getResources().getDimension(R.dimen.m3_carousel_small_item_size_min);
|
|
}
|
|
|
|
public static int maxValue(int[] iArr) {
|
|
int i = Integer.MIN_VALUE;
|
|
for (int i2 : iArr) {
|
|
if (i2 > i) {
|
|
i = i2;
|
|
}
|
|
}
|
|
return i;
|
|
}
|
|
|
|
public static float updateCurPosition(float f, float f2, float f3, int i) {
|
|
return i > 0 ? (f3 / 2.0f) + f2 : f;
|
|
}
|
|
}
|