mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2026-01-19 20:38:11 -05:00
We apply window insets to basically not draw behind the top and bottom bar. While this is a slight visual downgrade (we used to draw behind the top bar before), it at least allows us to target Android 15.
94 lines
4.2 KiB
Java
94 lines
4.2 KiB
Java
package protect.card_locker;
|
|
|
|
import android.content.Intent;
|
|
import android.graphics.Color;
|
|
import android.graphics.Typeface;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
import android.view.Window;
|
|
import android.widget.FrameLayout;
|
|
import android.widget.LinearLayout;
|
|
|
|
import androidx.annotation.Nullable;
|
|
import androidx.appcompat.widget.AppCompatImageView;
|
|
import androidx.core.content.ContextCompat;
|
|
import androidx.core.graphics.ColorUtils;
|
|
import androidx.core.view.WindowInsetsControllerCompat;
|
|
|
|
import com.google.android.material.color.MaterialColors;
|
|
import com.google.android.material.textview.MaterialTextView;
|
|
import com.yalantis.ucrop.UCropActivity;
|
|
|
|
public class UCropWrapper extends UCropActivity {
|
|
public static final String UCROP_TOOLBAR_TYPEFACE_STYLE = "ucop_toolbar_typeface_style";
|
|
|
|
@Override
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
Utils.applyWindowInsets(findViewById(android.R.id.content));
|
|
}
|
|
|
|
@Override
|
|
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
|
|
super.onPostCreate(savedInstanceState);
|
|
boolean darkMode = Utils.isDarkModeEnabled(this);
|
|
Window window = getWindow();
|
|
// setup status bar to look like the rest of the app
|
|
if (Build.VERSION.SDK_INT >= 23) {
|
|
if (window != null) {
|
|
View decorView = window.getDecorView();
|
|
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(window, decorView);
|
|
wic.setAppearanceLightStatusBars(!darkMode);
|
|
}
|
|
} else {
|
|
// icons are always white back then
|
|
if (window != null && !darkMode) {
|
|
window.setStatusBarColor(ColorUtils.compositeColors(Color.argb(127, 0, 0, 0), window.getStatusBarColor()));
|
|
}
|
|
}
|
|
|
|
// find and check views that we wish to color modify
|
|
// for when we update ucrop or switch to another cropper
|
|
View check = findViewById(com.yalantis.ucrop.R.id.wrapper_controls);
|
|
if (check instanceof FrameLayout) {
|
|
FrameLayout controls = (FrameLayout) check;
|
|
check = findViewById(com.yalantis.ucrop.R.id.wrapper_states);
|
|
if (check instanceof LinearLayout) {
|
|
LinearLayout states = (LinearLayout) check;
|
|
for (int i = 0; i < controls.getChildCount(); i++) {
|
|
check = controls.getChildAt(i);
|
|
if (check instanceof AppCompatImageView) {
|
|
AppCompatImageView controlsBackgroundImage = (AppCompatImageView) check;
|
|
// everything gathered and are as expected, now perform color patching
|
|
Utils.patchColors(this);
|
|
int colorSurface = MaterialColors.getColor(this, com.google.android.material.R.attr.colorSurface, ContextCompat.getColor(this, R.color.md_theme_light_surface));
|
|
int colorOnSurface = MaterialColors.getColor(this, com.google.android.material.R.attr.colorOnSurface, ContextCompat.getColor(this, R.color.md_theme_light_onSurface));
|
|
|
|
Drawable controlsBackgroundImageDrawable = controlsBackgroundImage.getBackground();
|
|
controlsBackgroundImageDrawable.mutate();
|
|
controlsBackgroundImageDrawable.setTint(darkMode ? colorOnSurface : colorSurface);
|
|
controlsBackgroundImage.setBackgroundDrawable(controlsBackgroundImageDrawable);
|
|
|
|
states.setBackgroundColor(darkMode ? colorSurface : colorOnSurface);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// change toolbar font
|
|
check = findViewById(com.yalantis.ucrop.R.id.toolbar_title);
|
|
if (check instanceof MaterialTextView) {
|
|
MaterialTextView toolbarTextview = (MaterialTextView) check;
|
|
Intent intent = getIntent();
|
|
int style = intent.getIntExtra(UCROP_TOOLBAR_TYPEFACE_STYLE, -1);
|
|
if (style != -1) {
|
|
toolbarTextview.setTypeface(Typeface.defaultFromStyle(style));
|
|
}
|
|
}
|
|
}
|
|
}
|