ADD week 5

This commit is contained in:
2025-03-31 16:33:42 +02:00
parent 86f265f22d
commit bf645048e6
4927 changed files with 544053 additions and 0 deletions

View File

@ -0,0 +1,160 @@
package com.google.android.material.divider;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import com.google.android.material.R;
import com.google.android.material.shape.MaterialShapeDrawable;
/* loaded from: classes.dex */
public class MaterialDivider extends View {
private static final int DEF_STYLE_RES = R.style.Widget_MaterialComponents_MaterialDivider;
private int color;
private final MaterialShapeDrawable dividerDrawable;
private int insetEnd;
private int insetStart;
private int thickness;
public int getDividerColor() {
return this.color;
}
public int getDividerInsetEnd() {
return this.insetEnd;
}
public int getDividerInsetStart() {
return this.insetStart;
}
public int getDividerThickness() {
return this.thickness;
}
public void setDividerInsetEnd(int i) {
this.insetEnd = i;
}
public void setDividerInsetStart(int i) {
this.insetStart = i;
}
public MaterialDivider(Context context) {
this(context, null);
}
public MaterialDivider(Context context, AttributeSet attributeSet) {
this(context, attributeSet, R.attr.materialDividerStyle);
}
/* JADX WARN: Illegal instructions before constructor call */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public MaterialDivider(android.content.Context r8, android.util.AttributeSet r9, int r10) {
/*
r7 = this;
int r4 = com.google.android.material.divider.MaterialDivider.DEF_STYLE_RES
android.content.Context r8 = com.google.android.material.theme.overlay.MaterialThemeOverlay.wrap(r8, r9, r10, r4)
r7.<init>(r8, r9, r10)
android.content.Context r8 = r7.getContext()
com.google.android.material.shape.MaterialShapeDrawable r0 = new com.google.android.material.shape.MaterialShapeDrawable
r0.<init>()
r7.dividerDrawable = r0
int[] r2 = com.google.android.material.R.styleable.MaterialDivider
r6 = 0
int[] r5 = new int[r6]
r0 = r8
r1 = r9
r3 = r10
android.content.res.TypedArray r9 = com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(r0, r1, r2, r3, r4, r5)
int r10 = com.google.android.material.R.styleable.MaterialDivider_dividerThickness
android.content.res.Resources r0 = r7.getResources()
int r1 = com.google.android.material.R.dimen.material_divider_thickness
int r0 = r0.getDimensionPixelSize(r1)
int r10 = r9.getDimensionPixelSize(r10, r0)
r7.thickness = r10
int r10 = com.google.android.material.R.styleable.MaterialDivider_dividerInsetStart
int r10 = r9.getDimensionPixelOffset(r10, r6)
r7.insetStart = r10
int r10 = com.google.android.material.R.styleable.MaterialDivider_dividerInsetEnd
int r10 = r9.getDimensionPixelOffset(r10, r6)
r7.insetEnd = r10
int r10 = com.google.android.material.R.styleable.MaterialDivider_dividerColor
android.content.res.ColorStateList r8 = com.google.android.material.resources.MaterialResources.getColorStateList(r8, r9, r10)
int r8 = r8.getDefaultColor()
r7.setDividerColor(r8)
r9.recycle()
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.material.divider.MaterialDivider.<init>(android.content.Context, android.util.AttributeSet, int):void");
}
@Override // android.view.View
protected void onMeasure(int i, int i2) {
super.onMeasure(i, i2);
int mode = View.MeasureSpec.getMode(i2);
int measuredHeight = getMeasuredHeight();
if (mode == Integer.MIN_VALUE || mode == 0) {
int i3 = this.thickness;
if (i3 > 0 && measuredHeight != i3) {
measuredHeight = i3;
}
setMeasuredDimension(getMeasuredWidth(), measuredHeight);
}
}
@Override // android.view.View
protected void onDraw(Canvas canvas) {
int width;
int i;
super.onDraw(canvas);
boolean z = ViewCompat.getLayoutDirection(this) == 1;
int i2 = z ? this.insetEnd : this.insetStart;
if (z) {
width = getWidth();
i = this.insetStart;
} else {
width = getWidth();
i = this.insetEnd;
}
this.dividerDrawable.setBounds(i2, 0, width - i, getBottom() - getTop());
this.dividerDrawable.draw(canvas);
}
public void setDividerThickness(int i) {
if (this.thickness != i) {
this.thickness = i;
requestLayout();
}
}
public void setDividerThicknessResource(int i) {
setDividerThickness(getContext().getResources().getDimensionPixelSize(i));
}
public void setDividerInsetStartResource(int i) {
setDividerInsetStart(getContext().getResources().getDimensionPixelOffset(i));
}
public void setDividerInsetEndResource(int i) {
setDividerInsetEnd(getContext().getResources().getDimensionPixelOffset(i));
}
public void setDividerColor(int i) {
if (this.color != i) {
this.color = i;
this.dividerDrawable.setFillColor(ColorStateList.valueOf(i));
invalidate();
}
}
public void setDividerColorResource(int i) {
setDividerColor(ContextCompat.getColor(getContext(), i));
}
}

View File

@ -0,0 +1,230 @@
package com.google.android.material.divider;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.ShapeDrawable;
import android.util.AttributeSet;
import android.view.View;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.R;
import com.google.android.material.internal.ThemeEnforcement;
import com.google.android.material.internal.ViewUtils;
import com.google.android.material.resources.MaterialResources;
/* loaded from: classes.dex */
public class MaterialDividerItemDecoration extends RecyclerView.ItemDecoration {
private static final int DEF_STYLE_RES = R.style.Widget_MaterialComponents_MaterialDivider;
public static final int HORIZONTAL = 0;
public static final int VERTICAL = 1;
private int color;
private Drawable dividerDrawable;
private int insetEnd;
private int insetStart;
private boolean lastItemDecorated;
private int orientation;
private final Rect tempRect;
private int thickness;
public int getDividerColor() {
return this.color;
}
public int getDividerInsetEnd() {
return this.insetEnd;
}
public int getDividerInsetStart() {
return this.insetStart;
}
public int getDividerThickness() {
return this.thickness;
}
public int getOrientation() {
return this.orientation;
}
public boolean isLastItemDecorated() {
return this.lastItemDecorated;
}
public void setDividerInsetEnd(int i) {
this.insetEnd = i;
}
public void setDividerInsetStart(int i) {
this.insetStart = i;
}
public void setDividerThickness(int i) {
this.thickness = i;
}
public void setLastItemDecorated(boolean z) {
this.lastItemDecorated = z;
}
protected boolean shouldDrawDivider(int i, RecyclerView.Adapter<?> adapter) {
return true;
}
public MaterialDividerItemDecoration(Context context, int i) {
this(context, null, i);
}
public MaterialDividerItemDecoration(Context context, AttributeSet attributeSet, int i) {
this(context, attributeSet, R.attr.materialDividerStyle, i);
}
public MaterialDividerItemDecoration(Context context, AttributeSet attributeSet, int i, int i2) {
this.tempRect = new Rect();
TypedArray obtainStyledAttributes = ThemeEnforcement.obtainStyledAttributes(context, attributeSet, R.styleable.MaterialDivider, i, DEF_STYLE_RES, new int[0]);
this.color = MaterialResources.getColorStateList(context, obtainStyledAttributes, R.styleable.MaterialDivider_dividerColor).getDefaultColor();
this.thickness = obtainStyledAttributes.getDimensionPixelSize(R.styleable.MaterialDivider_dividerThickness, context.getResources().getDimensionPixelSize(R.dimen.material_divider_thickness));
this.insetStart = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.MaterialDivider_dividerInsetStart, 0);
this.insetEnd = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.MaterialDivider_dividerInsetEnd, 0);
this.lastItemDecorated = obtainStyledAttributes.getBoolean(R.styleable.MaterialDivider_lastItemDecorated, true);
obtainStyledAttributes.recycle();
this.dividerDrawable = new ShapeDrawable();
setDividerColor(this.color);
setOrientation(i2);
}
public void setOrientation(int i) {
if (i == 0 || i == 1) {
this.orientation = i;
return;
}
throw new IllegalArgumentException("Invalid orientation: " + i + ". It should be either HORIZONTAL or VERTICAL");
}
public void setDividerThicknessResource(Context context, int i) {
setDividerThickness(context.getResources().getDimensionPixelSize(i));
}
public void setDividerColor(int i) {
this.color = i;
Drawable wrap = DrawableCompat.wrap(this.dividerDrawable);
this.dividerDrawable = wrap;
DrawableCompat.setTint(wrap, i);
}
public void setDividerColorResource(Context context, int i) {
setDividerColor(ContextCompat.getColor(context, i));
}
public void setDividerInsetStartResource(Context context, int i) {
setDividerInsetStart(context.getResources().getDimensionPixelOffset(i));
}
public void setDividerInsetEndResource(Context context, int i) {
setDividerInsetEnd(context.getResources().getDimensionPixelOffset(i));
}
@Override // androidx.recyclerview.widget.RecyclerView.ItemDecoration
public void onDraw(Canvas canvas, RecyclerView recyclerView, RecyclerView.State state) {
if (recyclerView.getLayoutManager() == null) {
return;
}
if (this.orientation == 1) {
drawForVerticalOrientation(canvas, recyclerView);
} else {
drawForHorizontalOrientation(canvas, recyclerView);
}
}
private void drawForVerticalOrientation(Canvas canvas, RecyclerView recyclerView) {
int width;
int i;
canvas.save();
if (recyclerView.getClipToPadding()) {
i = recyclerView.getPaddingLeft();
width = recyclerView.getWidth() - recyclerView.getPaddingRight();
canvas.clipRect(i, recyclerView.getPaddingTop(), width, recyclerView.getHeight() - recyclerView.getPaddingBottom());
} else {
width = recyclerView.getWidth();
i = 0;
}
boolean isLayoutRtl = ViewUtils.isLayoutRtl(recyclerView);
int i2 = i + (isLayoutRtl ? this.insetEnd : this.insetStart);
int i3 = width - (isLayoutRtl ? this.insetStart : this.insetEnd);
int childCount = recyclerView.getChildCount();
for (int i4 = 0; i4 < childCount; i4++) {
View childAt = recyclerView.getChildAt(i4);
if (shouldDrawDivider(recyclerView, childAt)) {
recyclerView.getLayoutManager().getDecoratedBoundsWithMargins(childAt, this.tempRect);
int round = this.tempRect.bottom + Math.round(childAt.getTranslationY());
this.dividerDrawable.setBounds(i2, round - this.thickness, i3, round);
this.dividerDrawable.draw(canvas);
}
}
canvas.restore();
}
private void drawForHorizontalOrientation(Canvas canvas, RecyclerView recyclerView) {
int height;
int i;
int i2;
int i3;
canvas.save();
if (recyclerView.getClipToPadding()) {
i = recyclerView.getPaddingTop();
height = recyclerView.getHeight() - recyclerView.getPaddingBottom();
canvas.clipRect(recyclerView.getPaddingLeft(), i, recyclerView.getWidth() - recyclerView.getPaddingRight(), height);
} else {
height = recyclerView.getHeight();
i = 0;
}
int i4 = i + this.insetStart;
int i5 = height - this.insetEnd;
boolean isLayoutRtl = ViewUtils.isLayoutRtl(recyclerView);
int childCount = recyclerView.getChildCount();
for (int i6 = 0; i6 < childCount; i6++) {
View childAt = recyclerView.getChildAt(i6);
if (shouldDrawDivider(recyclerView, childAt)) {
recyclerView.getLayoutManager().getDecoratedBoundsWithMargins(childAt, this.tempRect);
int round = Math.round(childAt.getTranslationX());
if (isLayoutRtl) {
i3 = this.tempRect.left + round;
i2 = this.thickness + i3;
} else {
i2 = round + this.tempRect.right;
i3 = i2 - this.thickness;
}
this.dividerDrawable.setBounds(i3, i4, i2, i5);
this.dividerDrawable.draw(canvas);
}
}
canvas.restore();
}
@Override // androidx.recyclerview.widget.RecyclerView.ItemDecoration
public void getItemOffsets(Rect rect, View view, RecyclerView recyclerView, RecyclerView.State state) {
rect.set(0, 0, 0, 0);
if (shouldDrawDivider(recyclerView, view)) {
if (this.orientation == 1) {
rect.bottom = this.thickness;
} else if (ViewUtils.isLayoutRtl(recyclerView)) {
rect.left = this.thickness;
} else {
rect.right = this.thickness;
}
}
}
private boolean shouldDrawDivider(RecyclerView recyclerView, View view) {
int childAdapterPosition = recyclerView.getChildAdapterPosition(view);
RecyclerView.Adapter adapter = recyclerView.getAdapter();
boolean z = adapter != null && childAdapterPosition == adapter.getItemCount() - 1;
if (childAdapterPosition != -1) {
return (!z || this.lastItemDecorated) && shouldDrawDivider(childAdapterPosition, (RecyclerView.Adapter<?>) adapter);
}
return false;
}
}