Many improvements

- [CODE] Change `distributionSha256Sum`
- [DESIGN] Rework markdown activity with blur support (beta)
- [API] added `this.getActionBarHeight(this);` to get the right action bar height (old one is still available)
- [CHIPS (MD)] Added chips for `Min. Android [...]`,`Max. Android [...]`, `Min. Magisk "[...]"`
- [CHIPS (MD)] Added an Android version parser
pull/145/head
DerGoogler 2 years ago
parent fa46b79c3e
commit ab5361a276

@ -105,7 +105,7 @@ public class MainActivity extends CompatActivity implements SwipeRefreshLayout.O
this.moduleList.setItemViewCacheSize(4); // Default is 2
OverScrollManager.install(this.moduleList, this);
this.swipeRefreshLayout.setOnRefreshListener(this);
this.actionBarBlur.setBackground(this.actionBarBackground);;
this.actionBarBlur.setBackground(this.actionBarBackground);
this.actionBarBlur.setupWith(this.moduleList).setFrameClearDrawable(
this.getWindow().getDecorView().getBackground())
.setBlurAlgorithm(new RenderScriptBlur(this))

@ -55,12 +55,12 @@ public class CompatActivity extends AppCompatActivity {
private static final String TAG = "CompatActivity";
public static final CompatActivity.OnBackPressedCallback DISABLE_BACK_BUTTON =
new CompatActivity.OnBackPressedCallback() {
@Override
public boolean onBackPressed(CompatActivity compatActivity) {
compatActivity.setOnBackPressedCallback(this);
return true;
}
};
@Override
public boolean onBackPressed(CompatActivity compatActivity) {
compatActivity.setOnBackPressedCallback(this);
return true;
}
};
final WeakReference<CompatActivity> selfReference;
private final CompatConfigHelper compatConfigHelper = new CompatConfigHelper(this);
@ -68,7 +68,8 @@ public class CompatActivity extends AppCompatActivity {
private CompatActivity.OnBackPressedCallback onBackPressedCallback;
private MenuItem.OnMenuItemClickListener menuClickListener;
private CharSequence menuContentDescription;
@StyleRes private int setThemeDynamic = 0;
@StyleRes
private int setThemeDynamic = 0;
private boolean onCreateCalledOnce = false;
private boolean onCreateCalled = false;
private boolean isRefreshUi = false;
@ -221,7 +222,8 @@ public class CompatActivity extends AppCompatActivity {
}
}
@Dimension @Px
@Dimension
@Px
public int getActionBarHeight() {
androidx.appcompat.app.ActionBar compatActionBar;
try {
@ -247,6 +249,15 @@ public class CompatActivity extends AppCompatActivity {
}
}
public int getActionBarHeight(Activity activity) {
TypedValue tv = new TypedValue();
int actionBarHeight = 0;
if (activity.getTheme().resolveAttribute(R.attr.actionBarSize, tv, true)) {
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics());
}
return actionBarHeight;
}
public void setActionBarBackground(Drawable drawable) {
androidx.appcompat.app.ActionBar compatActionBar;
try {
@ -264,7 +275,8 @@ public class CompatActivity extends AppCompatActivity {
}
}
@Dimension @Px
@Dimension
@Px
public int getStatusBarHeight() {
int height = WindowInsetsCompat.CONSUMED.getInsets(
WindowInsetsCompat.Type.statusBars()).top;
@ -476,7 +488,7 @@ public class CompatActivity extends AppCompatActivity {
this.checkResourcesOverrides(forceEnglish, nightModeOverride);
}
private void checkResourcesOverrides(boolean forceEnglish,Boolean nightModeOverride) {
private void checkResourcesOverrides(boolean forceEnglish, Boolean nightModeOverride) {
if (this.isRefreshUi || !this.onCreateCalled) return; // Wait before reload
this.compatConfigHelper.checkResourcesOverrides(forceEnglish, nightModeOverride);
}

@ -2,13 +2,21 @@ package com.fox2code.mmm.markdown;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
@ -21,6 +29,7 @@ import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.R;
import com.fox2code.mmm.XHooks;
import com.fox2code.mmm.compat.CompatActivity;
import com.fox2code.mmm.compat.CompatDisplay;
import com.fox2code.mmm.utils.Http;
import com.fox2code.mmm.utils.IntentHelper;
import com.google.android.material.chip.Chip;
@ -34,6 +43,7 @@ import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import eightbitlab.com.blurview.BlurView;
import eightbitlab.com.blurview.RenderScriptBlur;
public class MarkdownActivity extends CompatActivity {
@ -42,6 +52,12 @@ public class MarkdownActivity extends CompatActivity {
private static final String[] variants = new String[]{
"readme.md", "README.MD", ".github/README.md"
};
private BlurView chipHolder;
private TextView actionBarPadding;
private BlurView actionBarBlur;
private ColorDrawable anyBarBackground;
private ScrollView scrollView;
private LinearLayout md_layout;
private static byte[] getRawMarkdown(String url) throws IOException {
String newUrl = redirects.get(url);
@ -119,27 +135,38 @@ public class MarkdownActivity extends CompatActivity {
setContentView(R.layout.markdown_view);
final ViewGroup markdownBackground = findViewById(R.id.markdownBackground);
final TextView textView = findViewById(R.id.markdownView);
final HorizontalScrollView chip_holder = findViewById(R.id.chip_holder);
this.chipHolder = findViewById(R.id.chip_holder);
this.anyBarBackground = new ColorDrawable(Color.TRANSPARENT);
this.actionBarPadding = findViewById(R.id.markdown_action_bar_padding);
this.actionBarBlur = findViewById(R.id.markdown_action_bar_blur);
this.scrollView = findViewById(R.id.scrollView2);
this.md_layout = findViewById(R.id.md_layout);
final TextView footer = findViewById(R.id.markdownFooter);
UiThreadHandler.handler.postDelayed(() -> // Fix footer height
footer.setMinHeight(this.getNavigationBarHeight()), 1L);
this.actionBarBlur.setBackground(this.anyBarBackground);
this.setupBlurView(this.chipHolder, markdownBackground, this.anyBarBackground);
this.setupBlurView(this.actionBarBlur, markdownBackground, this.anyBarBackground);
this.updateScreenInsets();
this.updateUI();
// Really bad created
// Really bad created (MSG by Der_Googler)
if (MainApplication.isChipsDisabled()) {
chip_holder.setVisibility(View.GONE);
this.chipHolder.setVisibility(View.GONE);
} else {
this.chipHolder.setPadding(0,0,0,this.getNavigationBarHeight());
// set "message" to null to disable dialog
this.setChips(change_boot,
this.setChip(change_boot,
getString(R.string.module_can_change_boot),
"This module may change the boot image");
this.setChips(needs_ramdisk,
this.setChip(needs_ramdisk,
getString(R.string.module_needs_ramdisk),
"This module need boot ramdisk to be installed");
this.setChips(min_magisk, "Min. Magisk \"" + min_magisk + "\"",
this.setChip(min_magisk, "Min. Magisk \"" + min_magisk + "\"",
null);
this.setChips(min_api, "Min. Android " + min_api,
this.setChip(min_api, "Min. Android " + min_api,
null);
this.setChips(max_api, "Max. Android " + max_api,
this.setChip(max_api, "Max. Android " + max_api,
null);
}
@ -171,53 +198,121 @@ public class MarkdownActivity extends CompatActivity {
}, "Markdown load thread").start();
}
private void setChips(boolean bool, String title, String message) {
final ChipGroup chip_group_holder = findViewById(R.id.chip_group_holder);
private void setupBlurView(BlurView view, ViewGroup setupWith, ColorDrawable background) {
view.setBackground(background);
view.setupWith(setupWith).setFrameClearDrawable(
this.getWindow().getDecorView().getBackground())
.setBlurAlgorithm(new RenderScriptBlur(this))
.setBlurRadius(4F).setBlurAutoUpdate(true)
.setHasFixedTransformationMatrix(true);
}
private void updateScreenInsets() {
this.runOnUiThread(() -> this.updateScreenInsets(
this.getResources().getConfiguration()));
}
private void updateScreenInsets(Configuration configuration) {
boolean landscape = configuration.orientation ==
Configuration.ORIENTATION_LANDSCAPE;
int bottomInset = (landscape ? 0 : this.getNavigationBarHeight());
int statusBarHeight = getStatusBarHeight();
int actionBarHeight = getActionBarHeight();
int combinedBarsHeight = statusBarHeight + actionBarHeight;
this.actionBarPadding.setMinHeight(combinedBarsHeight);
//this.actionBarBlur.invalidate();
}
private void updateUI() {
boolean isLightMode = this.isLightTheme();
int colorBackground;
try {
colorBackground = this.getColorCompat(
android.R.attr.windowBackground);
} catch (Resources.NotFoundException e) {
colorBackground = this.getColorCompat(isLightMode ?
R.color.white : R.color.black);
}
this.md_layout.setPadding(0,this.getActionBarHeight(this) + this.getStatusBarHeight(),0,this.getNavigationBarHeight() + 56);
if (MainApplication.isBlurEnabled()) {
this.actionBarBlur.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, this.getActionBarHeight(this) + this.getStatusBarHeight()));
this.chipHolder.setBlurEnabled(true);
this.anyBarBackground.setColor(ColorUtils
.setAlphaComponent(colorBackground, 0x02));
this.anyBarBackground.setColor(Color.TRANSPARENT);
this.actionBarBlur.setBlurEnabled(true);
} else {
this.chipHolder.setBlurEnabled(false);
this.chipHolder.setOverlayColor(Color.TRANSPARENT);
this.anyBarBackground.setColor(colorBackground);
this.actionBarBlur.setBlurEnabled(false);
this.actionBarBlur.setOverlayColor(Color.TRANSPARENT);
}
}
private void setChip(boolean bool, String title, String message) {
if (bool) {
Chip chip = new Chip(this);
chip.setText(title);
chip.setVisibility(View.VISIBLE);
if (message != null) {
chip.setOnClickListener(_view -> {
MaterialAlertDialogBuilder builder =
new MaterialAlertDialogBuilder(this);
builder
.setTitle(title)
.setMessage(message)
.setCancelable(true)
.setPositiveButton(R.string.ok, (x, y) -> {
x.dismiss();
}).show();
this.makeChip(title, message);
}
}
});
}
chip_group_holder.addView(chip);
private void setChip(int i, String title, String message) {
if (i != 0) {
this.makeChip(title, message);
}
}
private void setChips(int i, String title, String message) {
private void makeChip(String title, String message) {
final ChipGroup chip_group_holder = findViewById(R.id.chip_group_holder);
if (i != 0) {
Chip chip = new Chip(this);
chip.setText(title);
chip.setVisibility(View.VISIBLE);
if (message != null) {
chip.setOnClickListener(_view -> {
MaterialAlertDialogBuilder builder =
new MaterialAlertDialogBuilder(this);
builder
.setTitle(title)
.setMessage(message)
.setCancelable(true)
.setPositiveButton(R.string.ok, (x, y) -> {
x.dismiss();
}).show();
Chip chip = new Chip(this);
chip.setText(title);
chip.setVisibility(View.VISIBLE);
if (message != null) {
chip.setOnClickListener(_view -> {
MaterialAlertDialogBuilder builder =
new MaterialAlertDialogBuilder(this);
});
}
chip_group_holder.addView(chip);
builder
.setTitle(title)
.setMessage(message)
.setCancelable(true)
.setPositiveButton(R.string.ok, (x, y) -> {
x.dismiss();
}).show();
});
}
chip_group_holder.addView(chip);
}
private String parseAndroidVersion(int version) {
switch (version) {
case Build.VERSION_CODES.LOLLIPOP:
return "5.0";
case Build.VERSION_CODES.LOLLIPOP_MR1:
return "5.1";
case Build.VERSION_CODES.M:
return "6.0";
case Build.VERSION_CODES.N:
return "7.0";
case Build.VERSION_CODES.N_MR1:
return "7.1";
case Build.VERSION_CODES.O:
return "8.0";
case Build.VERSION_CODES.O_MR1:
return "8.1";
case Build.VERSION_CODES.P:
return "9.0 (P)";
case Build.VERSION_CODES.Q:
return "10 (Q)";
case Build.VERSION_CODES.R:
return "11 (R)";
case Build.VERSION_CODES.S:
return "12 (S)";
case Build.VERSION_CODES.S_V2:
return "12L";
default:
return "false";
}
}

@ -4,13 +4,11 @@ import android.content.Context;
import android.text.Spanned;
import android.util.Log;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.DrawableRes;
import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.R;
@ -21,7 +19,6 @@ import com.fox2code.mmm.installer.InstallerInitializer;
import com.fox2code.mmm.manager.LocalModuleInfo;
import com.fox2code.mmm.manager.ModuleInfo;
import com.fox2code.mmm.manager.ModuleManager;
import com.fox2code.mmm.module.ModuleHolder;
import com.fox2code.mmm.utils.IntentHelper;
import com.google.android.material.chip.Chip;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;

@ -1,21 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/markdownBackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="vertical"
app:fitsSystemWindowsInsets="top|left|right|bottom">
app:fitsSystemWindowsInsets="left|right"
tools:context=".markdown.MarkdownActivity">
<ScrollView
android:layout_width="match_parent"
android:id="@+id/scrollView2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"
tools:ignore="UselessParent">
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:id="@+id/md_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -35,21 +39,43 @@
</LinearLayout>
</ScrollView>
<HorizontalScrollView
android:id="@+id/chip_holder"
<eightbitlab.com.blurview.BlurView
android:id="@+id/markdown_action_bar_blur"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/markdown_action_bar_padding"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</eightbitlab.com.blurview.BlurView>
<com.google.android.material.chip.ChipGroup
android:id="@+id/chip_group_holder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:padding="8dp"
app:singleLine="true">
<eightbitlab.com.blurview.BlurView
android:id="@+id/chip_holder"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@id/scrollView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.chip.ChipGroup
android:id="@+id/chip_group_holder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:padding="8dp"
app:singleLine="true">
<!-- Dynamically added -->
<!-- Dynamically added -->
</com.google.android.material.chip.ChipGroup>
</HorizontalScrollView>
</eightbitlab.com.blurview.BlurView>
</com.google.android.material.chip.ChipGroup>
</HorizontalScrollView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

@ -5,7 +5,7 @@ buildscript {
mavenCentral()
gradlePluginPortal()
}
project.ext.latestAboutLibsRelease = "10.1.0"
project.ext.latestAboutLibsRelease = "10.2.0"
dependencies {
classpath 'com.android.tools.build:gradle:7.2.0'
classpath "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:${latestAboutLibsRelease}"

@ -1,6 +1,7 @@
#Sun May 15 18:07:03 CEST 2022
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
distributionSha256Sum=9afb3ca688fc12c761a0e9e4321e4d24e977a4a8916c8a768b1fe05ddb4d6b66
zipStoreBase=GRADLE_USER_HOME
distributionSha256Sum=b586e04868a22fd817c8971330fec37e298f3242eb85c374181b12d637f80302
Loading…
Cancel
Save