From e39a6d10bd84dc4249496465624a06d00c9920db Mon Sep 17 00:00:00 2001 From: vvb2060 Date: Sun, 18 Jul 2021 21:02:44 +0800 Subject: [PATCH] [app] New icon (#819) --- app/build.gradle.kts | 2 - app/src/main/ic_launcher-playstore.png | Bin 14303 -> 0 bytes .../manager/ui/fragment/HomeFragment.java | 17 +- .../org/lsposed/manager/util/AppModule.java | 26 +-- .../org/lsposed/manager/util/GlideHelper.java | 32 --- .../util/svg/ExternalFileResolver.java | 58 ------ .../lsposed/manager/util/svg/SvgDecoder.java | 63 ------ .../util/svg/SvgDrawableTranscoder.java | 72 ------- .../res/drawable/ic_launcher_background.xml | 189 ------------------ .../res/drawable/ic_launcher_foreground.xml | 26 +-- .../main/res/layout/activity_crash_report.xml | 4 +- app/src/main/res/layout/dialog_about.xml | 100 +++------ .../res/mipmap-anydpi-v26/ic_launcher.xml | 2 +- app/src/main/res/values-night/colors.xml | 3 + app/src/main/res/values/colors.xml | 3 + 15 files changed, 63 insertions(+), 534 deletions(-) delete mode 100644 app/src/main/ic_launcher-playstore.png delete mode 100644 app/src/main/java/org/lsposed/manager/util/GlideHelper.java delete mode 100644 app/src/main/java/org/lsposed/manager/util/svg/ExternalFileResolver.java delete mode 100644 app/src/main/java/org/lsposed/manager/util/svg/SvgDecoder.java delete mode 100644 app/src/main/java/org/lsposed/manager/util/svg/SvgDrawableTranscoder.java delete mode 100644 app/src/main/res/drawable/ic_launcher_background.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5152a606..e69ea1bd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -201,9 +201,7 @@ dependencies { implementation("androidx.recyclerview:recyclerview:1.2.1") implementation("androidx.slidingpanelayout:slidingpanelayout:1.2.0-alpha03") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") - implementation("com.caverock:androidsvg-aar:1.4") implementation("com.github.bumptech.glide:glide:$glideVersion") - implementation("com.github.bumptech.glide:okhttp3-integration:$glideVersion") implementation("com.google.android.material:material:1.4.0") implementation("com.google.code.gson:gson:2.8.7") implementation("com.takisoft.preferencex:preferencex:1.1.0") diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png deleted file mode 100644 index 1837cd55d6fedd7d3202e36f03fad20a577aacf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14303 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 Io8_= Build.VERSION_CODES.P) { + packageInfo.setLongVersionCode(System.currentTimeMillis()); + } + return packageInfo; + } + @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { FragmentMainBinding mainBinding = FragmentMainBinding.inflate(inflater, container, false); @@ -93,13 +104,13 @@ public class HomeFragment extends BaseFragment { binding.translators.setMovementMethod(LinkMovementMethod.getInstance()); binding.translators.setTransformationMethod(new LinkTransformationMethod(activity)); binding.translators.setText(HtmlCompat.fromHtml(getString(R.string.about_translators, getString(R.string.translators)), HtmlCompat.FROM_HTML_MODE_LEGACY)); - binding.version.setText(String.format(Locale.US, "%s (%s)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)); + binding.version.setText(String.format(Locale.US, "LSPosed %s (%s)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)); new BlurBehindDialogBuilder(activity) .setView(binding.getRoot()) .show(); }); Glide.with(binding.appIcon) - .load(GlideHelper.wrapApplicationInfoForIconLoader(activity.getApplicationInfo())) + .load(wrap(activity.getApplicationInfo(), getResources().getConfiguration().hashCode())) .into(binding.appIcon); String installXposedVersion = ConfigManager.getXposedVersionName(); int cardBackgroundColor; diff --git a/app/src/main/java/org/lsposed/manager/util/AppModule.java b/app/src/main/java/org/lsposed/manager/util/AppModule.java index dabfe943..98805f46 100644 --- a/app/src/main/java/org/lsposed/manager/util/AppModule.java +++ b/app/src/main/java/org/lsposed/manager/util/AppModule.java @@ -23,41 +23,29 @@ package org.lsposed.manager.util; import android.content.Context; import android.content.pm.PackageInfo; import android.graphics.Bitmap; -import android.graphics.drawable.AdaptiveIconDrawable; -import android.graphics.drawable.Drawable; import androidx.annotation.NonNull; import com.bumptech.glide.Glide; import com.bumptech.glide.Registry; import com.bumptech.glide.annotation.GlideModule; -import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader; -import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.module.AppGlideModule; -import com.caverock.androidsvg.SVG; -import org.lsposed.manager.App; import org.lsposed.manager.R; -import org.lsposed.manager.util.svg.ExternalFileResolver; -import org.lsposed.manager.util.svg.SvgDecoder; -import org.lsposed.manager.util.svg.SvgDrawableTranscoder; - -import java.io.InputStream; import me.zhanghai.android.appiconloader.glide.AppIconModelLoader; @GlideModule public class AppModule extends AppGlideModule { + @Override + public boolean isManifestParsingEnabled() { + return false; + } + @Override public void registerComponents(Context context, @NonNull Glide glide, Registry registry) { int iconSize = context.getResources().getDimensionPixelSize(R.dimen.app_icon_size); - registry.prepend(PackageInfo.class, Bitmap.class, new AppIconModelLoader.Factory(iconSize, - context.getApplicationInfo().loadIcon(context.getPackageManager()) instanceof AdaptiveIconDrawable, context)); - OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(App.getOkHttpClient()); - registry.replace(GlideUrl.class, InputStream.class, factory); - SVG.registerExternalFileResolver(new ExternalFileResolver()); - registry.register(SVG.class, Drawable.class, new SvgDrawableTranscoder(context)) - .append(InputStream.class, SVG.class, new SvgDecoder()); + var factory = new AppIconModelLoader.Factory(iconSize, true, context); + registry.prepend(PackageInfo.class, Bitmap.class, factory); } } - diff --git a/app/src/main/java/org/lsposed/manager/util/GlideHelper.java b/app/src/main/java/org/lsposed/manager/util/GlideHelper.java deleted file mode 100644 index 28a6f4e8..00000000 --- a/app/src/main/java/org/lsposed/manager/util/GlideHelper.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is part of LSPosed. - * - * LSPosed is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * LSPosed is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with LSPosed. If not, see . - * - * Copyright (C) 2020 EdXposed Contributors - * Copyright (C) 2021 LSPosed Contributors - */ - -package org.lsposed.manager.util; - -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; - -public class GlideHelper { - public static PackageInfo wrapApplicationInfoForIconLoader(ApplicationInfo applicationInfo) { - PackageInfo packageInfo = new PackageInfo(); - packageInfo.applicationInfo = applicationInfo; - return packageInfo; - } -} diff --git a/app/src/main/java/org/lsposed/manager/util/svg/ExternalFileResolver.java b/app/src/main/java/org/lsposed/manager/util/svg/ExternalFileResolver.java deleted file mode 100644 index 1da60ba8..00000000 --- a/app/src/main/java/org/lsposed/manager/util/svg/ExternalFileResolver.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of LSPosed. - * - * LSPosed is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * LSPosed is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with LSPosed. If not, see . - * - * Copyright (C) 2021 LSPosed Contributors - */ - -package org.lsposed.manager.util.svg; - -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Picture; -import android.util.Base64; - -import com.caverock.androidsvg.SVG; -import com.caverock.androidsvg.SVGExternalFileResolver; - -public class ExternalFileResolver extends SVGExternalFileResolver { - @Override - public Bitmap resolveImage(String filename) { - if (filename.startsWith("data:image/svg+xml;base64,")) { - // com.shatyuka.zhiliao - try { - String base64 = filename.substring(filename.indexOf(",")); - SVG svg = SVG.getFromString(new String(Base64.decode(base64, Base64.DEFAULT))); - float width = svg.getDocumentWidth(); - float height = svg.getDocumentHeight(); - Bitmap bitmap; - if (width > 0 && height > 0) { - bitmap = Bitmap.createBitmap(Math.round(width), Math.round(width), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - svg.renderToCanvas(canvas); - } else { - Picture picture = svg.renderToPicture(); - bitmap = Bitmap.createBitmap(picture.getWidth(), picture.getHeight(), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - canvas.drawPicture(picture); - } - return bitmap; - } catch (Exception e) { - e.printStackTrace(); - } - } - return super.resolveImage(filename); - } -} diff --git a/app/src/main/java/org/lsposed/manager/util/svg/SvgDecoder.java b/app/src/main/java/org/lsposed/manager/util/svg/SvgDecoder.java deleted file mode 100644 index a1ae9076..00000000 --- a/app/src/main/java/org/lsposed/manager/util/svg/SvgDecoder.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of LSPosed. - * - * LSPosed is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * LSPosed is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with LSPosed. If not, see . - * - * Copyright (C) 2021 LSPosed Contributors - */ - -package org.lsposed.manager.util.svg; - -import static com.bumptech.glide.request.target.Target.SIZE_ORIGINAL; - -import androidx.annotation.NonNull; - -import com.bumptech.glide.load.Options; -import com.bumptech.glide.load.ResourceDecoder; -import com.bumptech.glide.load.engine.Resource; -import com.bumptech.glide.load.resource.SimpleResource; -import com.caverock.androidsvg.SVG; -import com.caverock.androidsvg.SVGParseException; - -import java.io.IOException; -import java.io.InputStream; - -/** - * Decodes an SVG internal representation from an {@link InputStream}. - */ -public class SvgDecoder implements ResourceDecoder { - - @Override - public boolean handles(@NonNull InputStream source, @NonNull Options options) { - // TODO: Can we tell? - return true; - } - - public Resource decode( - @NonNull InputStream source, int width, int height, @NonNull Options options) - throws IOException { - try { - SVG svg = SVG.getFromInputStream(source); - if (width != SIZE_ORIGINAL) { - svg.setDocumentWidth(width); - } - if (height != SIZE_ORIGINAL) { - svg.setDocumentHeight(height); - } - return new SimpleResource<>(svg); - } catch (SVGParseException ex) { - throw new IOException("Cannot load SVG from stream", ex); - } - } -} diff --git a/app/src/main/java/org/lsposed/manager/util/svg/SvgDrawableTranscoder.java b/app/src/main/java/org/lsposed/manager/util/svg/SvgDrawableTranscoder.java deleted file mode 100644 index d75c393b..00000000 --- a/app/src/main/java/org/lsposed/manager/util/svg/SvgDrawableTranscoder.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * This file is part of LSPosed. - * - * LSPosed is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * LSPosed is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with LSPosed. If not, see . - * - * Copyright (C) 2021 LSPosed Contributors - */ - -package org.lsposed.manager.util.svg; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Picture; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.PictureDrawable; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.bumptech.glide.load.Options; -import com.bumptech.glide.load.engine.Resource; -import com.bumptech.glide.load.resource.SimpleResource; -import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; -import com.caverock.androidsvg.SVG; - -/** - * Convert the {@link SVG}'s internal representation to an Android-compatible one ({@link Picture}). - */ -public class SvgDrawableTranscoder implements ResourceTranscoder { - private final Resources resources; - - public SvgDrawableTranscoder(Context context) { - resources = context.getResources(); - } - - @Nullable - @Override - public Resource transcode( - @NonNull Resource toTranscode, @NonNull Options options) { - SVG svg = toTranscode.get(); - float width = svg.getDocumentWidth(); - float height = svg.getDocumentHeight(); - - Drawable drawable; - if (width > 0 && height > 0) { - float density = resources.getDisplayMetrics().density; - Bitmap bitmap = Bitmap.createBitmap(Math.round(width * density), Math.round(height * density), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - canvas.scale(density, density); - svg.renderToCanvas(canvas); - drawable = new BitmapDrawable(resources, bitmap); - } else { - Picture picture = svg.renderToPicture(); - drawable = new PictureDrawable(picture); - } - return new SimpleResource<>(drawable); - } -} diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index b4ef8ccb..00000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index b44bae90..8e75c220 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -14,7 +14,6 @@ ~ You should have received a copy of the GNU General Public License ~ along with LSPosed. If not, see . ~ - ~ Copyright (C) 2020 EdXposed Contributors ~ Copyright (C) 2021 LSPosed Contributors --> @@ -22,23 +21,14 @@ android:width="108dp" android:height="108dp" android:viewportWidth="108" - android:viewportHeight="108" - android:tint="#562135"> + android:viewportHeight="108"> - - - - - + android:scaleX="2" + android:scaleY="2" + android:translateX="30" + android:translateY="30"> + diff --git a/app/src/main/res/layout/activity_crash_report.xml b/app/src/main/res/layout/activity_crash_report.xml index 5d26e944..64857fb1 100644 --- a/app/src/main/res/layout/activity_crash_report.xml +++ b/app/src/main/res/layout/activity_crash_report.xml @@ -77,8 +77,8 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="4dp" - android:text="Copy logs" + android:text="@android:string/copy" android:theme="@style/Widget.AppCompat.Button.Colored" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/dialog_about.xml b/app/src/main/res/layout/dialog_about.xml index 8855ff58..a2d18708 100644 --- a/app/src/main/res/layout/dialog_about.xml +++ b/app/src/main/res/layout/dialog_about.xml @@ -20,85 +20,35 @@ + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="?android:dialogPreferredPadding" + android:paddingVertical="?android:dialogPreferredPadding"> - - - - - - - - - - - - - - + android:textSize="14sp" + tools:text="@tools:sample/lorem" /> - + - - - - - + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 38bbb9cd..c16bb8f9 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -19,6 +19,6 @@ --> - + diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index bea2dc86..acdb7a2d 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -19,4 +19,7 @@ @color/color_primary_dark + + @color/material_pink_300 + @color/material_light_blue_50 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 5d0a2d15..616feffd 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -22,4 +22,7 @@ @color/google_blue_600 @color/google_blue_300 @color/color_primary_light + + @android:color/white + @color/material_pink_200