From dfed755f8107f872fa4c50d51ba2e81703124714 Mon Sep 17 00:00:00 2001 From: tehcneko <7764726+tehcneko@users.noreply.github.com> Date: Mon, 8 Feb 2021 18:28:34 +0800 Subject: [PATCH] [app] Add newyear header (#97) --- app/build.gradle | 5 + app/libs/WeatherView-2.0.3.aar | Bin 0 -> 32549 bytes .../manager/ui/activity/BaseActivity.java | 2 +- .../manager/ui/activity/MainActivity.java | 35 +- .../holidays/FlowerGenerator.java | 29 ++ .../customiuizer/holidays/FlowerParticle.java | 70 ++++ .../customiuizer/holidays/HolidayHelper.java | 119 +++++++ .../customiuizer/holidays/SnowGenerator.java | 29 ++ .../customiuizer/holidays/SnowParticle.java | 84 +++++ .../customiuizer/utils/GravitySensor.java | 102 ++++++ .../mikanoshi/customiuizer/utils/Helpers.java | 25 ++ app/src/main/res/drawable-nodpi/confetti1.png | Bin 0 -> 921 bytes app/src/main/res/drawable-nodpi/confetti2.png | Bin 0 -> 891 bytes app/src/main/res/drawable-nodpi/confetti3.png | Bin 0 -> 628 bytes .../drawable-nodpi/lunar_newyear_header.webp | Bin 0 -> 13368 bytes .../res/drawable-nodpi/newyear_header.webp | Bin 0 -> 29862 bytes app/src/main/res/drawable-nodpi/petal.webp | Bin 0 -> 754 bytes .../main/res/drawable-nodpi/snowflake.webp | Bin 0 -> 730 bytes app/src/main/res/layout/activity_main.xml | 21 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 4 +- app/src/main/res/values-uk/strings.xml | 316 ++++++------------ app/src/main/res/values-zh-rCN/strings.xml | 1 - app/src/main/res/values-zh-rHK/strings.xml | 1 - app/src/main/res/values-zh-rTW/strings.xml | 3 +- 24 files changed, 631 insertions(+), 215 deletions(-) create mode 100644 app/libs/WeatherView-2.0.3.aar create mode 100644 app/src/main/java/name/mikanoshi/customiuizer/holidays/FlowerGenerator.java create mode 100644 app/src/main/java/name/mikanoshi/customiuizer/holidays/FlowerParticle.java create mode 100644 app/src/main/java/name/mikanoshi/customiuizer/holidays/HolidayHelper.java create mode 100644 app/src/main/java/name/mikanoshi/customiuizer/holidays/SnowGenerator.java create mode 100644 app/src/main/java/name/mikanoshi/customiuizer/holidays/SnowParticle.java create mode 100644 app/src/main/java/name/mikanoshi/customiuizer/utils/GravitySensor.java create mode 100644 app/src/main/java/name/mikanoshi/customiuizer/utils/Helpers.java create mode 100644 app/src/main/res/drawable-nodpi/confetti1.png create mode 100644 app/src/main/res/drawable-nodpi/confetti2.png create mode 100644 app/src/main/res/drawable-nodpi/confetti3.png create mode 100644 app/src/main/res/drawable-nodpi/lunar_newyear_header.webp create mode 100644 app/src/main/res/drawable-nodpi/newyear_header.webp create mode 100644 app/src/main/res/drawable-nodpi/petal.webp create mode 100644 app/src/main/res/drawable-nodpi/snowflake.webp diff --git a/app/build.gradle b/app/build.gradle index cc2eaa40..ff7bbf81 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,6 +32,7 @@ android { packagingOptions { exclude 'META-INF/**' + exclude 'kotlin/**' exclude 'org/**' exclude '**.properties' exclude '**.bin' @@ -72,5 +73,9 @@ dependencies { implementation 'tech.rectifier.preferencex-android:preferencex-simplemenu:88f93154b2' implementation 'me.zhanghai.android.appiconloader:appiconloader-glide:1.2.0' implementation 'me.zhanghai.android.fastscroll:library:1.1.5' + //noinspection DifferentStdlibGradleVersion + implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.21' + implementation 'com.github.jinatonic.confetti:confetti:1.1.2' + implementation files('libs/WeatherView-2.0.3.aar') compileOnly project(":hiddenapi-stubs") } diff --git a/app/libs/WeatherView-2.0.3.aar b/app/libs/WeatherView-2.0.3.aar new file mode 100644 index 0000000000000000000000000000000000000000..6da15dd97fc78238003a6bc3d5260b543d83fa2c GIT binary patch literal 32549 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 z%0A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 A2mk;8 literal 0 HcmV?d00001 diff --git a/app/src/main/java/io/github/lsposed/manager/ui/activity/BaseActivity.java b/app/src/main/java/io/github/lsposed/manager/ui/activity/BaseActivity.java index 0b85cdc1..6143cf3b 100644 --- a/app/src/main/java/io/github/lsposed/manager/ui/activity/BaseActivity.java +++ b/app/src/main/java/io/github/lsposed/manager/ui/activity/BaseActivity.java @@ -149,7 +149,7 @@ public class BaseActivity extends AppCompatActivity { getWindow().setStatusBarColor(getThemedColor(R.attr.colorPrimaryDark)); } } else { - getWindow().setStatusBarColor(getThemedColor(android.R.attr.colorBackground)); + getWindow().setStatusBarColor(0); } if (!Objects.equals(theme, getTheme(this) + getCustomTheme() + preferences.getBoolean("md2", true))) { recreate(); diff --git a/app/src/main/java/io/github/lsposed/manager/ui/activity/MainActivity.java b/app/src/main/java/io/github/lsposed/manager/ui/activity/MainActivity.java index 30d3d0a1..078a47cf 100644 --- a/app/src/main/java/io/github/lsposed/manager/ui/activity/MainActivity.java +++ b/app/src/main/java/io/github/lsposed/manager/ui/activity/MainActivity.java @@ -2,10 +2,15 @@ package io.github.lsposed.manager.ui.activity; import android.annotation.SuppressLint; import android.content.Intent; +import android.os.Build; import android.os.Bundle; import android.view.View; import androidx.core.content.ContextCompat; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowCompat; +import androidx.core.view.WindowInsetsCompat; import com.bumptech.glide.Glide; import com.google.android.material.snackbar.Snackbar; @@ -20,6 +25,8 @@ import io.github.lsposed.manager.util.GlideHelper; import io.github.lsposed.manager.util.ModuleUtil; import io.github.lsposed.manager.util.NavUtil; import io.github.lsposed.manager.util.light.Light; +import name.mikanoshi.customiuizer.holidays.HolidayHelper; +import name.mikanoshi.customiuizer.utils.Helpers; public class MainActivity extends BaseActivity { ActivityMainBinding binding; @@ -30,6 +37,15 @@ public class MainActivity extends BaseActivity { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + WindowCompat.setDecorFitsSystemWindows(getWindow(), false); + ViewCompat.setOnApplyWindowInsetsListener(binding.nestedScrollView, (v, insets) -> { + Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime()); + v.setPadding(insets1.left, insets1.top, insets1.right, insets1.bottom); + return WindowInsetsCompat.CONSUMED; + }); + } + HolidayHelper.setup(this); binding.status.setOnClickListener(v -> { if (Constants.getXposedVersionCode() != -1) { new StatusDialogBuilder(this) @@ -51,7 +67,11 @@ public class MainActivity extends BaseActivity { if (installedXposedVersion != null) { binding.statusTitle.setText(String.format(Locale.US, "%s %s", getString(R.string.Activated), Constants.getXposedVariant())); if (!Constants.isPermissive()) { - binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.colorNormal)); + if (Helpers.currentHoliday == Helpers.Holidays.LUNARNEWYEAR) { + binding.status.setCardBackgroundColor(0xfff05654); + } else { + binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.colorNormal)); + } binding.statusIcon.setImageResource(R.drawable.ic_check_circle); binding.statusSummary.setText(String.format(Locale.US, "%s (%d)", installedXposedVersion, Constants.getXposedVersionCode())); } else { @@ -99,5 +119,18 @@ public class MainActivity extends BaseActivity { }); super.onResume(); binding.modulesSummary.setText(String.format(getString(R.string.ModulesDetail), ModuleUtil.getInstance().getEnabledModules().size())); + HolidayHelper.onResume(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + HolidayHelper.onDestroy(); + } + + @Override + protected void onPause() { + super.onPause(); + HolidayHelper.onPause(); } } diff --git a/app/src/main/java/name/mikanoshi/customiuizer/holidays/FlowerGenerator.java b/app/src/main/java/name/mikanoshi/customiuizer/holidays/FlowerGenerator.java new file mode 100644 index 00000000..b48c595b --- /dev/null +++ b/app/src/main/java/name/mikanoshi/customiuizer/holidays/FlowerGenerator.java @@ -0,0 +1,29 @@ +package name.mikanoshi.customiuizer.holidays; + +import android.content.Context; + +import com.github.jinatonic.confetti.ConfettoGenerator; +import com.github.jinatonic.confetti.confetto.Confetto; +import com.github.matteobattilana.weather.PrecipType; +import com.github.matteobattilana.weather.confetti.ConfettoInfo; + +import java.util.Random; + +public class FlowerGenerator implements ConfettoGenerator { + private final ConfettoInfo confettoInfo; + private final Context context; + + public FlowerGenerator(Context ctx) { + super(); + this.context = ctx; + this.confettoInfo = new ConfettoInfo(PrecipType.SNOW); + } + + public Confetto generateConfetto(Random random) { + return new FlowerParticle(this.context, this.confettoInfo); + } + + public final ConfettoInfo getConfettoInfo() { + return this.confettoInfo; + } +} diff --git a/app/src/main/java/name/mikanoshi/customiuizer/holidays/FlowerParticle.java b/app/src/main/java/name/mikanoshi/customiuizer/holidays/FlowerParticle.java new file mode 100644 index 00000000..f1193f25 --- /dev/null +++ b/app/src/main/java/name/mikanoshi/customiuizer/holidays/FlowerParticle.java @@ -0,0 +1,70 @@ +package name.mikanoshi.customiuizer.holidays; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.view.Surface; +import android.view.WindowManager; + +import com.github.jinatonic.confetti.confetto.Confetto; +import com.github.matteobattilana.weather.confetti.ConfettoInfo; + +import java.util.Random; + +import io.github.lsposed.manager.R; + +@SuppressWarnings("FieldCanBeLocal") +public class FlowerParticle extends Confetto { + private final ConfettoInfo confettoInfo; + private final Bitmap petal; + private float petalScale; + private final int[] petals = new int[]{R.drawable.confetti1, R.drawable.confetti1, R.drawable.confetti2, R.drawable.confetti2, R.drawable.confetti3, R.drawable.confetti3, R.drawable.petal}; + + FlowerParticle(Context context, ConfettoInfo confettoInfo) { + super(); + this.confettoInfo = confettoInfo; + petalScale = 0.6f - (float) Math.random() * 0.15f; + petal = BitmapFactory.decodeResource(context.getResources(), petals[new Random().nextInt(petals.length)]); + + int rotation = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation(); + if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) petalScale *= 1.5; + } + + public int getHeight() { + return 0; + } + + public int getWidth() { + return 0; + } + + public void reset() { + super.reset(); + } + + protected void configurePaint(Paint paint) { + super.configurePaint(paint); + paint.setColor(-1); + paint.setAntiAlias(true); + } + + protected void drawInternal(Canvas canvas, Matrix matrix, Paint paint, float x, float y, float rotation, float percentageAnimated) { + switch (confettoInfo.getPrecipType()) { + case CLEAR: + break; + case SNOW: + matrix.postScale(petalScale, petalScale); + matrix.postRotate(rotation, petal.getWidth() / 2f, petal.getHeight() / 2f); + matrix.postTranslate(x, y); + canvas.drawBitmap(petal, matrix, paint); + break; + } + } + + public final ConfettoInfo getConfettoInfo() { + return this.confettoInfo; + } +} diff --git a/app/src/main/java/name/mikanoshi/customiuizer/holidays/HolidayHelper.java b/app/src/main/java/name/mikanoshi/customiuizer/holidays/HolidayHelper.java new file mode 100644 index 00000000..98e89619 --- /dev/null +++ b/app/src/main/java/name/mikanoshi/customiuizer/holidays/HolidayHelper.java @@ -0,0 +1,119 @@ +package name.mikanoshi.customiuizer.holidays; + +import android.app.Activity; +import android.view.Surface; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.RelativeLayout; + +import androidx.coordinatorlayout.widget.CoordinatorLayout; + +import com.github.jinatonic.confetti.ConfettiManager; +import com.github.jinatonic.confetti.ConfettoGenerator; +import com.github.matteobattilana.weather.PrecipType; +import com.github.matteobattilana.weather.WeatherView; + +import java.lang.ref.WeakReference; +import java.lang.reflect.Field; + +import io.github.lsposed.manager.R; +import name.mikanoshi.customiuizer.utils.GravitySensor; +import name.mikanoshi.customiuizer.utils.Helpers; + +public class HolidayHelper { + + private static WeakReference weatherView; + private static WeakReference angleListener; + + public static void setWeatherGenerator(ConfettoGenerator generator) { + try { + ConfettiManager manager = weatherView.get().getConfettiManager(); + Field confettoGenerator = ConfettiManager.class.getDeclaredField("confettoGenerator"); + confettoGenerator.setAccessible(true); + confettoGenerator.set(manager, generator); + } catch (Throwable t) { + t.printStackTrace(); + } + } + + public static void setup(Activity activity) { + Helpers.detectHoliday(); + + WeatherView view = activity.findViewById(R.id.weather_view); + ImageView header = activity.findViewById(R.id.holiday_header); + + view.setLayerType(View.LAYER_TYPE_HARDWARE, null); + weatherView = new WeakReference<>(view); + GravitySensor listener = null; + if (Helpers.currentHoliday == Helpers.Holidays.NEWYEAR) { + int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); + view.setPrecipType(PrecipType.SNOW); + view.setSpeed(50); + view.setEmissionRate(rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270 ? 8 : 4); + view.setFadeOutPercent(0.75f); + view.setAngle(0); + RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) view.getLayoutParams(); + lp.height = activity.getResources().getDisplayMetrics().heightPixels / (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270 ? 2 : 3); + view.setLayoutParams(lp); + setWeatherGenerator(new SnowGenerator(activity)); + view.resetWeather(); + view.setVisibility(View.VISIBLE); + view.getConfettiManager().setRotationalVelocity(0, 45); + + listener = new GravitySensor(activity, view); + listener.setOrientation(rotation); + listener.setSpeed(50); + listener.start(); + + header.setImageResource(R.drawable.newyear_header); + header.setVisibility(View.VISIBLE); + } else if (Helpers.currentHoliday == Helpers.Holidays.LUNARNEWYEAR) { + int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); + view.setPrecipType(PrecipType.SNOW); + view.setSpeed(35); + view.setEmissionRate(rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270 ? 4 : 2); + view.setFadeOutPercent(0.75f); + view.setAngle(0); + CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) view.getLayoutParams(); + lp.height = activity.getResources().getDisplayMetrics().heightPixels / (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270 ? 3 : 4); + view.setLayoutParams(lp); + setWeatherGenerator(new FlowerGenerator(activity)); + view.resetWeather(); + view.setVisibility(View.VISIBLE); + view.getConfettiManager().setRotationalVelocity(0, 45); + + listener = new GravitySensor(activity, view); + listener.setOrientation(rotation); + listener.setSpeed(35); + listener.start(); + + header.setImageResource(R.drawable.lunar_newyear_header); + header.setVisibility(View.VISIBLE); + } else { + ((ViewGroup) view.getParent()).removeView(view); + ((ViewGroup) header.getParent()).removeView(header); + } + angleListener = new WeakReference<>(listener); + } + + public static void onPause() { + GravitySensor listener = angleListener.get(); + if (listener != null) listener.onPause(); + WeatherView view = weatherView.get(); + if (view != null) view.getConfettiManager().terminate(); + } + + public static void onResume() { + GravitySensor listener = angleListener.get(); + if (listener != null) listener.onResume(); + WeatherView view = weatherView.get(); + if (view != null) view.getConfettiManager().animate(); + } + + public static void onDestroy() { + GravitySensor listener = angleListener.get(); + if (listener != null) listener.stop(); + } + +} diff --git a/app/src/main/java/name/mikanoshi/customiuizer/holidays/SnowGenerator.java b/app/src/main/java/name/mikanoshi/customiuizer/holidays/SnowGenerator.java new file mode 100644 index 00000000..4721d4ac --- /dev/null +++ b/app/src/main/java/name/mikanoshi/customiuizer/holidays/SnowGenerator.java @@ -0,0 +1,29 @@ +package name.mikanoshi.customiuizer.holidays; + +import android.content.Context; + +import com.github.jinatonic.confetti.ConfettoGenerator; +import com.github.jinatonic.confetti.confetto.Confetto; +import com.github.matteobattilana.weather.PrecipType; +import com.github.matteobattilana.weather.confetti.ConfettoInfo; + +import java.util.Random; + +public class SnowGenerator implements ConfettoGenerator { + private final ConfettoInfo confettoInfo; + private final Context context; + + public SnowGenerator(Context ctx) { + super(); + this.context = ctx; + this.confettoInfo = new ConfettoInfo(PrecipType.SNOW); + } + + public Confetto generateConfetto(Random random) { + return new SnowParticle(this.context, this.confettoInfo); + } + + public final ConfettoInfo getConfettoInfo() { + return this.confettoInfo; + } +} diff --git a/app/src/main/java/name/mikanoshi/customiuizer/holidays/SnowParticle.java b/app/src/main/java/name/mikanoshi/customiuizer/holidays/SnowParticle.java new file mode 100644 index 00000000..f7c4b818 --- /dev/null +++ b/app/src/main/java/name/mikanoshi/customiuizer/holidays/SnowParticle.java @@ -0,0 +1,84 @@ +package name.mikanoshi.customiuizer.holidays; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Paint; + +import com.github.jinatonic.confetti.confetto.Confetto; +import com.github.matteobattilana.weather.confetti.ConfettoInfo; + +import io.github.lsposed.manager.R; + +public class SnowParticle extends Confetto { + private Float prevX; + private Float prevY; + private final ConfettoInfo confettoInfo; + private final Bitmap snowflake; + private final float snowScale; + //private float rainStretch; + + SnowParticle(Context context, ConfettoInfo confettoInfo) { + super(); + this.confettoInfo = confettoInfo; + snowScale = 0.6f - (float) Math.random() * 0.3f; + //rainStretch = 1.5f + (float)Math.random() - 0.5f; + snowflake = BitmapFactory.decodeResource(context.getResources(), R.drawable.snowflake); + } + + public int getHeight() { + return 0; + } + + public int getWidth() { + return 0; + } + + public void reset() { + super.reset(); + this.prevX = null; + this.prevY = null; + } + + protected void configurePaint(Paint paint) { + super.configurePaint(paint); + paint.setColor(-1); + paint.setAntiAlias(true); + } + + protected void drawInternal(Canvas canvas, Matrix matrix, Paint paint, float x, float y, float rotation, float percentageAnimated) { + if (prevX == null || prevY == null) { + prevX = x; + prevY = y; + } + + switch (confettoInfo.getPrecipType()) { + case CLEAR: + break; +// case RAIN: +// float dX = x - prevX; +// float dY = y - prevY; +// float x1 = prevX - dX * rainStretch; +// float y1 = prevY - dY * rainStretch; +// float x2 = x + dX * rainStretch; +// float y2 = y + dY * rainStretch; +// paint.setShader(new LinearGradient(x1, y1, x2, y2, new int[] { Color.TRANSPARENT, 0xb29aa3ad, 0xb29aa3ad, Color.TRANSPARENT }, new float[] { 0f, 0.45f, 0.55f, 1f }, Shader.TileMode.CLAMP)); +// canvas.drawLine(x1, y1, x2, y2, paint); +// break; + case SNOW: + matrix.postScale(snowScale, snowScale); + matrix.postRotate(rotation, snowflake.getWidth() / 2f, snowflake.getHeight() / 2f); + matrix.postTranslate(x, y); + canvas.drawBitmap(snowflake, matrix, paint); + break; + } + prevX = x; + prevY = y; + } + + public final ConfettoInfo getConfettoInfo() { + return this.confettoInfo; + } +} diff --git a/app/src/main/java/name/mikanoshi/customiuizer/utils/GravitySensor.java b/app/src/main/java/name/mikanoshi/customiuizer/utils/GravitySensor.java new file mode 100644 index 00000000..d0f6c6e4 --- /dev/null +++ b/app/src/main/java/name/mikanoshi/customiuizer/utils/GravitySensor.java @@ -0,0 +1,102 @@ +package name.mikanoshi.customiuizer.utils; + +import android.content.Context; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.view.Surface; + +import com.github.matteobattilana.weather.WeatherView; + +public final class GravitySensor implements SensorEventListener { + private final SensorManager sensorManager; + private float[] magneticValues; + private float[] accelerometerValues; + private int orientation; + private int speed; + private boolean started; + private final Context context; + private final WeatherView weatherView; + + public GravitySensor(Context context, WeatherView weatherView) { + super(); + this.context = context; + this.weatherView = weatherView; + this.sensorManager = (SensorManager) this.context.getSystemService(Context.SENSOR_SERVICE); + } + + public void setOrientation(int orient) { + this.orientation = orient; + } + + public void setSpeed(int spd) { + this.speed = spd; + } + + public void onAccuracyChanged(Sensor sensor, int accuracy) { + } + + public void onSensorChanged(SensorEvent event) { + if (event == null || event.sensor == null) return; + switch (event.sensor.getType()) { + case 1: + this.accelerometerValues = event.values; + break; + case 2: + this.magneticValues = event.values; + break; + } + if (this.magneticValues == null || this.accelerometerValues == null) return; + + float[] rotationMatrix = new float[9]; + SensorManager.getRotationMatrix(rotationMatrix, null, this.accelerometerValues, this.magneticValues); + float[] remappedRotationMatrix = new float[9]; + SensorManager.remapCoordinateSystem(rotationMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, remappedRotationMatrix); + float[] orientationAngles = new float[3]; + SensorManager.getOrientation(remappedRotationMatrix, orientationAngles); + //double pitch = Math.toDegrees((double)orientationAngles[1]); + double roll = Math.toDegrees(orientationAngles[2]) + Math.random() * 20 - 10; + if (this.orientation == Surface.ROTATION_90) roll += 90; + else if (this.orientation == Surface.ROTATION_270) roll -= 90; + else if (this.orientation == Surface.ROTATION_180) roll += roll > 0 ? 180 : -180; + if (roll > 90) roll -= 180; + else if (roll < -90) roll += 180; + this.weatherView.setAngle((int) roll); + this.weatherView.setSpeed(this.speed + (int) Math.round(Math.random() * 20 - 10)); + } + + private void registerListener() { + this.sensorManager.registerListener(this, this.sensorManager.getDefaultSensor(1), 2); + this.sensorManager.registerListener(this, this.sensorManager.getDefaultSensor(2), 2); + } + + private void unregisterListener() { + this.sensorManager.unregisterListener(this); + } + + public final void start() { + this.started = true; + this.registerListener(); + } + + public final void stop() { + this.started = false; + this.unregisterListener(); + } + + public final void onResume() { + if (this.started) { + this.registerListener(); + } + } + + public final void onPause() { + this.unregisterListener(); + } + + public final Context getContext() { + return this.context; + } + +} diff --git a/app/src/main/java/name/mikanoshi/customiuizer/utils/Helpers.java b/app/src/main/java/name/mikanoshi/customiuizer/utils/Helpers.java new file mode 100644 index 00000000..f7d7eed2 --- /dev/null +++ b/app/src/main/java/name/mikanoshi/customiuizer/utils/Helpers.java @@ -0,0 +1,25 @@ +package name.mikanoshi.customiuizer.utils; + +import java.util.Calendar; + +public class Helpers { + + public static Holidays currentHoliday = Holidays.NONE; + + public enum Holidays { + NONE, NEWYEAR, LUNARNEWYEAR + } + + public static void detectHoliday() { + currentHoliday = Holidays.NONE; + Calendar cal = Calendar.getInstance(); + int month = cal.get(Calendar.MONTH); + int monthDay = cal.get(Calendar.DAY_OF_MONTH); + //int year = cal.get(Calendar.YEAR); + + // Lunar NY + if ((month == 0 && monthDay > 15) || month == 1) currentHoliday = Holidays.LUNARNEWYEAR; + // NY + else if (month == 0 || month == 11) currentHoliday = Holidays.NEWYEAR; + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-nodpi/confetti1.png b/app/src/main/res/drawable-nodpi/confetti1.png new file mode 100644 index 0000000000000000000000000000000000000000..d34c62b571b2b399eb0ec20c19be1a6ed6442c24 GIT binary patch literal 921 zcmV;K17`e*P)AvI&Zvzw5TwnJiCPST5Vj~0#gOV}SPFt5O0>`jf*^!8L5m`AXC^KLMGylQ zk`Y8gmGnQ9prp5OOm)pJGd(QpNy$Z8c$$xdKGIS)=aFf$3g(B7i%TfNvv_KD_CD+y@oX> z{@?LP3PiZKuztastcaUfN3b?y4P(v5>U?Abu%=_ZgLSD2e0hw;xAO_s3aq&)(ksQ2 zUx#(M4t#ms$GQ;HYdzKrSbZ%Qi0~U?+Dv2+cn}j<*Rc*`eTel6)>B#6NnZFathHEY z;uFmZUn%k@)(NaH<8=ocO|Lxg9ayX44NFbJSBi{box?hSwKXpK-edw1eks;>Sa%Y_ zS4N3YhJVER3~L$ItP}zZu=Zh5Abfd@W8K0!jkT@X+sFd{G}aebf3yhxLEOOloKUU) z*FPGCpMmv$e64vZPM)}j^%J2%4pf70NC2x7>kX{4Erh>`wS$nd-MJSrVbQ*X^+Su` zON7$A5o<l}AdEjda^bxw>-Gbr&#oCQECog<0fqtyx z1;dYHeSVN=#n zlWL|4Ex`IMG5iG9F2XFF>~x~)kA%(Bp2PyDuwG7;I`ss42&3I-BKQ%kE!3H=k_kkK zd8BD(_X#Hu&!&d2C(wtriRSl0XR%fl0sl~eC@~-FAYr)31AiOqQ>^}W33OwqwNazQua3X!uM5WfH?NoobyAUB!Bj#2q(@Kv_Bs zVQt5{R#BZwgu(ooR>0>HC=+>-aOiZpOu|_2QoyIA1BCpEP)Y|{F2MaC1gr*TnSE580nO6^`3E?m?giuqVz*Hgw zGjIx8f+i|1a>27T$DHWYIh{JcovyjPT{uBRY&&PiGhrA1y94L{+ur9r?<--9Ne**F zFAxBTT_6AuyFdUSc7Xsu>;irPu)7?=dYdV#z*rxDOZ_}$d}Ai)&;S%x!@e=f)8+0qH>K;D~SlVOy2CRqA9epDrhF0P#R*;|O5x?Y5>-K3Y1@9XLR{HWmYfJv;#n2seSSy=MCRRfBDk_e^*Lh=Q&2j;G&& z{~0Q!>3Jze5Nvh1PsX#dGBfvJoAk)ep z)9T1E!2w@pdt-ex2fMQlgmr0yMVHKWt5)U~V%+DGsOI28vQiW9+*}bR{=R&hzk~9Tpfbfbt z(yXDfSiQ}3UT-s<(%VeollD3BFZKQ!(F+6sViyPi#4Zp3h+QB65W4{1`~xno(y_*? R=D`2}002ovPDHLkV1nOpjEVpN literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-nodpi/confetti3.png b/app/src/main/res/drawable-nodpi/confetti3.png new file mode 100644 index 0000000000000000000000000000000000000000..4b3babc9971288bfa1d479e6f5d6f62ec7143b29 GIT binary patch literal 628 zcmV-)0*n2LP)#F`(>#F`(># zkpm#tk>`=Oj4I$Has&AR@}`jjARk2jgxo^@g?tBjdL#hI)5tGEd~$A79)LWBd>?te z3&6;W$h9g1u67AeP80cbB>~~Y`PK)pf&316f29D($B@7FiBHZe?% zz;EP-gY1W*;twOg86f;`#O1VzqT;`2jPJ|}^6sGmkZZ{2kw4^&?`-O2d}kWShYANE&mupk{WORbzlwZ@6mO+G;X9D8gp(##_y+Q8x zGV*MmLnQ6;*@^rVc`Z_WllJqv?>QfH56mFnjS&AM?4_x^@dE(@ViNgUj{UHTe1VJ~ zFS!8$QA1wHxNJ_v3eOBkATH7V9844c1^Ha;_{@L=;x_#+vvuT!BI0ua0-}z5kKRY@ z8tn^evXX#+*hBA+m!(*zO<{n5IL^P%i;u{Ai;Ry32#80C_y+RXqT^!&jwS$)W8AXC z2Go(CAiqc6H;nkGfPk1oUL00@5r7)<%*X=Dn9>8rfU*O|fU*Prd%zzOf15H2pt`OA O0000 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-nodpi/lunar_newyear_header.webp b/app/src/main/res/drawable-nodpi/lunar_newyear_header.webp new file mode 100644 index 0000000000000000000000000000000000000000..74a6121489ebfb54cde52856417bb39525aa77d2 GIT binary patch literal 13368 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 I|Nr0#0RDu9ZvX%Q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-nodpi/petal.webp b/app/src/main/res/drawable-nodpi/petal.webp new file mode 100644 index 0000000000000000000000000000000000000000..b8221bba05b9f7e5fccf1bcdf15f47f98bcf6f85 GIT binary patch literal 754 zcmV-R6e8m*3$L$5Y^r}&Ch&}@%&!zoBN~pKW)>mj$>oScR7vq zsM{kyyOGB!4t;TrnTe945{hhjt=Fa`qTaA3d?H6TD#iV`{oG@w|4s+)lb96$pK zfEh5{QYeSwLQp6a0o@J~Tq<}@JX5a?I$CDLKpiHu+#(uI0ZQvs=_pPdA;?OFE32d< zcNU+1rIkc42jgEzQz8vawM`BkObSxfsk_tEWrV8hISu+d*XM0NPcNhEG{gAEq^$3h znd?Ts{fUWpEk}<>RM(61tyy2r;qrIsDrDQXWXM*wZTr}^ZQC~g{{t>Fp3Y-L?1=tP zfceSwzWQi+&oXzU+^LDtw1<%YbbJ&uF$Wp%83TZZsQ6No_%-b(;y#%g(NSP5mvqp0 z%npmH>de$Zh=g8D5Am>!h)kcmC^(O&hkiQ2?QF8lfi2Y#cOcLJfKe81{|Dy#P9 zo(SAr^$zr@h^VTzKM*)*XJ+l|5m83r*k1Um2N>uRphFdfBWuohTUQSTI?;trMX7jb zEwJ4M5kRC<&?UtKTh8QscV~x`&;@2d+N^o@>$@wz>lC1C?!i`Iy|KI6*;WDsf=c)G zyRDbSrm9xT+}Xh*m2TPg*?OD<8X8;6oo$t0n|D379%h?r4QOdCbEUgg8t31f_G&;2 z*R?jP0u7r1WBYNTh8C`?X8>s62Zyz%r9Ut?NYiTASbte;sI@ReM4B*rZ|r}pH3-+5 z(FCAw=bJ!av!$VaWqlKSlXpsG|A?Vp%yLFq-jRukBh@t3A1l5RZ kzrJC1&p|@eVMO$Kp?=G6Cvz|it6$q|q(Nw#TQW8>JiZQHhO+qSK>(SJPWTs#-A5&dW2wvnRr7#F(T zKhXb5z#ojsU5>lSn00vFU&Lp5%xnaK=hzJ31Z?6w& zixXfUM`1!SEODCGS!9X@2;2sMZQ0#S%xYyA&9V~su7ZC;R11bQJlkE#-YUfcf7RAU z~L@*0YW z`kW{f$%C_x6$z^eQ@}-qifOD>_i*fDfQXuK>dJ9BL?aOmV%>)4MmJJbz<>n2x{_Ev zK>Q22-T~530I4gqV(JCJWx0vf|05EJcxQhym0tq*n6HUeJE}hgfV=f8U_FPXFbS~d zC}R=0S!9R6X}vO?c$;rbH<7vG8koy|2d_=mxD)p^tb=2!rXJ9tOmwPz1b8&QLt5s{ zf8nFUTUH!%YBZ@Twl0Ra!bk0}gPl32q7)0HL8s866K$O6;aD3nwPMro6E4|_tUxMK zf8>d;k9rXGFRO4UK7S?6HZ)3 zScw~nkJI=W;J8?k6bBYF#2grKqJTswALtizAa@7OB*mqzj7Z2CS#0 + + + + - - + + \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 75338b86..7a6640c1 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -1,209 +1,111 @@ -Про модифікацію -Активовано -Установити -Натисніть для встановлення LSPosed -Звіти -Модулі -%d модулі(в) увімкнено -Налаштування -Перейти на головну -Перейти вгору -Більше опцій -Готово -Показати всі -Вибрати програму -ЗНИЖКА -УВІМК. -Alt+ -Ctrl+ -delete -enter -Function+ -Meta+ -Shift+ -пробіл -Sym+ -Menu+ -Введіть пошуковий запит… -Очистити запит -Пошуковий запит -Пошук -Наіслати запит -Голосовий пошук -Поділитися: -Поділитися через додаток %s -Згорнути -https://github.com/LSPosed/LSPosed/ -Вихідний код -Колір акценту -System Framework -Android %2$s (%1$s, API %3$d) -Ця програма припинила роботу, будь ласка, переконайтесь, що завантажили її з офіційного джерела. -Запустити -LSPosed Manager -com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior -com.google.android.material.bottomsheet.BottomSheetBehavior -Набрано символів %1$d з %2$d -Перевищено ліміт символів %1$d з %2$d -%1$d/%2$d -Chip text -Очистити текст -Вибрати колір -Колір %1$d -Вибрано колір: %1$d -Кольоровий ActionBar -Помилка оптимізації або повернене значення порожнє -Помилка оптимізації: -Повторна оптимізація -Оптимізація… -Скопіювати -Посилання скопійовано в буфер обміну -Готово! -Не показувати знову -Увімкнути модуль -Помилка -Додатково -Показати спадне меню -com.google.android.material.transformation.FabTransformationScrimBehavior -com.google.android.material.transformation.FabTransformationSheetBehavior -Не вдалося зберегти список областей -Копіювати посилання -Відкрити у веб-переглядачі -Надіслати посилання -Слідувати системі -http://t.me/LSPosed -com.google.android.material.behavior.HideBottomViewOnScrollBehavior -Значок діалогового вікна -Інформація -Обережно! -Вкладка -Завантаження… -Звіт порожній. -"Не вдається прочитати звіт: " -Не вдалося очистити звіт: -Звіт успішно очищено. -Не вдалося зберегти: -LSPosed наразі не встановлений або не активний. -Material Design 2 -Кінець діапазону, -Початок діапазону, -Очистити звіт зараз -Перезавантажити -Зберегти -Надіслати -Створити резервну копію -Створення резервної копії… -Відновити -Ігри -Модулі -Системні програми -Сортування... -Інформація про програму -Модуль %s вимкнено, оскільки жодна програма не вибрана. -(опису не надано) -Модуль LSPosed ще не активований -%s було встановлено, але ще не активовано -Цей модуль не надає інтерфейсу користувача -Налаштування модуля -Видалити -Переглянути в Play Store -Нове сповіщення -Видалити %1$s -Більше %1$d нових сповіщень -%1$d%2$s -Змінити на наступний місяць -Змінити на попередній місяць -Поточний вибір: %1$s -@android:string/cancel -@android:string/ok -%1$s -Виберіть дату -Вибрана дата -Стовпець днів: %1$s -Недійсний формат. -Приклад: %1$s -Використання: %1$s -Недійсний діапазон. -Перейти до року %1$s -Не належить діапазону: %1$s -Дата початку – %1$s -%1$s – Кінцева дата -%1$s – %2$s -Виберіть діапазон дат -Дата початку - дата закінчення -Зберегти -Дата -Дата закінчення -Дата початку -д -м -р -Перемкнутись на режим введення календаря -Торкніться, щоб перейти до вибору дня -Перемкнутись до режиму введення тексту -Торкніться, щоб перейти до вибору року -Детальні звіти -Звіти модулів -Модулі -Цей модуль не визначає потрібну йому версію LSP. -Ви не вибрали жодної програми. Продовжити? -Ви не вибрали жодної програми. Вибрати рекомендовані програми? -Не встановлено -"Це звіт LSPosed Framework та модулів, якщо вам потрібен Android logcat, ви можете спробувати наш модуль Magisk Log Catcher" -Не налаштовано -OK -Версія LSPosed Manager і LSPosed Core не узгоджуються. Будь ласка, встановіть відповідну версію. -Показувати пароль -M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z -M2,4.27 L19.73,22 L22.27,19.46 L4.54,1.73 L4.54,1 L23,1 L23,23 L1,23 L1,4.27 Z -M2,4.27 L2,4.27 L4.54,1.73 L4.54,1.73 L4.54,1 L23,1 L23,23 L1,23 L1,4.27 Z -M3.27,4.27 L19.74,20.74 -Вимкнути детальні звіти -\"%1$s\": скопійовано в буфер обміну. -Основний колір -Використовувати чисто чорну темну тему -Рекомендовано -Прокрутити донизу -Прокрутити догори -Пошук -УВАГА: Статус SELinux не Enforcing! Шкідливі програми, які користуються цим, зможуть повністю керувати вашим пристроєм і спричинити шкоду вашим даним. -Статус SELinux не Enforcing! -Резервне копіювання -Резервне копіювання і відновлення -Резервне копіювання або відновлення списку модулів та списків областей. -Не вдалося зробити резервну копію -Резервне копіювання закінчено! -Резервне копіювання… -Увімкнути хуки ресурсів -УВАГА: Хуки ресурсів застаріли -Framework -Тема -Відновлення -Не вдалося відновити -Відновлення закінчено! -Відновлення… -Тема -Темна -Світла -Варіант -Сортувати за часом встановлення -Сортувати за часом встановлення (зворотній) -Сортувати за назвою програми -Сортувати за назвою програми (зворотній) -Сортувати за назвою пакета -Сортувати за назвою пакету (зворотній) -Сортувати за часом оновлення -Сортувати за часом оновлення (зворотній) -999+ -%1$s, %2$s -Прозорий рядок стану -Рекомендовано -Вибрати рекомендовані програми? -ВИМКНЕНО -УВІМКНЕНО -Цей модуль не можна завантажити, оскільки він встановлений на SD-карті, перенесіть його у внутрішню пам’ять -Цей модуль був створений для версії LSP %1$d, але через несумісні зміни у версії %2$d його було вимкнено -Цей модуль вимагає новішої версії LSP (%d), тому його неможливо активувати -Модуль LSPosed оновлено + Про модифікацію + Активовано + Установити + Натисніть для встановлення LSPosed + Звіти + Модулі + %d модулі(в) увімкнено + Налаштування + https://github.com/LSPosed/LSPosed/ + Вихідний код + Колір акценту + System Framework + Android %2$s (%1$s, API %3$d) + Ця програма припинила роботу, будь ласка, переконайтесь, що завантажили її з офіційного джерела. + Запустити + LSPosed Manager + com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior + Кольоровий ActionBar + Помилка оптимізації або повернене значення порожнє + Помилка оптимізації: + Повторна оптимізація + Оптимізація… + Посилання скопійовано в буфер обміну + Не показувати знову + Увімкнути модуль + Не вдалося зберегти список областей + Слідувати системі + http://t.me/LSPosed + Інформація + Обережно! + Завантаження… + Звіт порожній. + "Не вдається прочитати звіт: " + Не вдалося очистити звіт: + Звіт успішно очищено. + Не вдалося зберегти: + LSPosed наразі не встановлений або не активний. + Material Design 2 + Очистити звіт зараз + Перезавантажити + Зберегти + Надіслати + Створити резервну копію + Створення резервної копії… + Відновити + Ігри + Модулі + Системні програми + Сортування... + Інформація про програму + Модуль %s вимкнено, оскільки жодна програма не вибрана. + (опису не надано) + Модуль LSPosed ще не активований + %s було встановлено, але ще не активовано + Цей модуль не надає інтерфейсу користувача + Налаштування модуля + Видалити + Переглянути в Play Store + Детальні звіти + Звіти модулів + Модулі + Цей модуль не визначає потрібну йому версію LSP. + Ви не вибрали жодної програми. Продовжити? + Ви не вибрали жодної програми. Вибрати рекомендовані програми? + Не встановлено + "Це звіт LSPosed Framework та модулів, якщо вам потрібен Android logcat, ви можете спробувати наш модуль Magisk Log Catcher" + OK + Версія LSPosed Manager і LSPosed Core не узгоджуються. Будь ласка, встановіть відповідну версію. + Вимкнути детальні звіти + Основний колір + Використовувати чисто чорну темну тему + Рекомендовано + Прокрутити донизу + Прокрутити догори + УВАГА: Статус SELinux не Enforcing! Шкідливі програми, які користуються цим, зможуть повністю керувати вашим пристроєм і спричинити шкоду вашим даним. + Статус SELinux не Enforcing! + Резервне копіювання + Резервне копіювання і відновлення + Резервне копіювання або відновлення списку модулів та списків областей. + Не вдалося зробити резервну копію + Резервне копіювання закінчено! + Резервне копіювання… + Увімкнути хуки ресурсів + УВАГА: Хуки ресурсів застаріли + Framework + Тема + Відновлення + Не вдалося відновити + Відновлення закінчено! + Відновлення… + Тема + Темна + Світла + Варіант + Сортувати за часом встановлення + Сортувати за часом встановлення (зворотній) + Сортувати за назвою програми + Сортувати за назвою програми (зворотній) + Сортувати за назвою пакета + Сортувати за назвою пакету (зворотній) + Сортувати за часом оновлення + Сортувати за часом оновлення (зворотній) + Прозорий рядок стану + Рекомендовано + Вибрати рекомендовані програми? + Цей модуль не можна завантажити, оскільки він встановлений на SD-карті, перенесіть його у внутрішню пам’ять + Цей модуль був створений для версії LSP %1$d, але через несумісні зміни у версії %2$d його було вимкнено + Цей модуль вимагає новішої версії LSP (%d), тому його неможливо активувати + Модуль LSPosed оновлено diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index ee78107a..840a84d0 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -77,7 +77,6 @@ 优化中… - 完成! 禁用详细日志 无法读取日志: \n diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 8f673a1d..3b91f58a 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -75,7 +75,6 @@ 優化中… - 完成! 禁用詳細日誌 無法讀取日誌: \n diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 73f7e2ef..ec3460fb 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -8,7 +8,7 @@ 日誌 設定 關於 - + 傳送 儲存 @@ -80,7 +80,6 @@ Android %2$s (%1$s, API %3$d) 這裡是 LSPosed 框架和模組的日誌\n若您需要 Android 的 logcat,您可以嘗試我們 Log Catcher 的 Magisk 模組 - Done! 最佳化中…