Skip to content

Commit

Permalink
CHANGELOG: More QS Page Animations
Browse files Browse the repository at this point in the history
  • Loading branch information
DHD2280 committed Apr 30, 2024
1 parent 25b72e0 commit 7a8e958
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,39 @@
import static de.robv.android.xposed.XposedBridge.hookAllMethods;
import static de.robv.android.xposed.XposedBridge.log;
import static de.robv.android.xposed.XposedHelpers.callMethod;
import static de.robv.android.xposed.XposedHelpers.findAndHookConstructor;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
import static de.robv.android.xposed.XposedHelpers.findClass;
import static de.robv.android.xposed.XposedHelpers.getBooleanField;
import static de.robv.android.xposed.XposedHelpers.getIntField;
import static de.robv.android.xposed.XposedHelpers.getObjectField;
import static de.robv.android.xposed.XposedHelpers.setIntField;
import static de.robv.android.xposed.XposedHelpers.setObjectField;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTiles.QS_TILES_PREFS;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.*;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_BRIGHTNESS_SLIDER_BACKGROUND_COLOR;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_BRIGHTNESS_SLIDER_BACKGROUND_ENABLED;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_BRIGHTNESS_SLIDER_COLOR;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_BRIGHTNESS_SLIDER_COLOR_MODE;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_BRIGHTNESS_SLIDER_CUSTOMIZE;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_ACTIVE_COLOR;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_ACTIVE_COLOR_ENABLED;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_ANIMATION_DURATION;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_ANIMATION_INTERPOLATOR;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_ANIMATION_STYLE;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_ANIMATION_TRANSFORMATIONS;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_ANIMATION_TRANSFORMATIONS_SWITCH;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_DISABLED_COLOR;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_DISABLED_COLOR_ENABLED;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_HIDE_LABELS;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_INACTIVE_COLOR;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_INACTIVE_COLOR_ENABLED;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_LABELS_CUSTOM_COLOR;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_TILE_LABELS_CUSTOM_COLOR_ENABLED;
import static it.dhd.oxygencustomizer.utils.Constants.Preferences.QsTilesCustomization.QS_UPDATE_PREFS;
import static it.dhd.oxygencustomizer.xposed.XPrefs.Xprefs;
import static it.dhd.oxygencustomizer.xposed.hooks.systemui.OpUtils.getPrimaryColor;
import static it.dhd.oxygencustomizer.xposed.utils.ViewHelper.dp2px;

import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.ShapeDrawable;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateDecelerateInterpolator;
Expand All @@ -40,35 +47,36 @@
import android.view.animation.DecelerateInterpolator;
import android.view.animation.LinearInterpolator;
import android.view.animation.OvershootInterpolator;
import android.widget.AbsSeekBar;
import android.widget.CheckBox;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.graphics.ColorUtils;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.viewpager.widget.ViewPager;

import com.google.android.material.slider.Slider;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Objects;
import java.util.concurrent.ThreadLocalRandom;

import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import it.dhd.oxygencustomizer.utils.Constants;
import it.dhd.oxygencustomizer.xposed.XPrefs;
import it.dhd.oxygencustomizer.xposed.XposedMods;
import it.dhd.oxygencustomizer.xposed.utils.ShellUtils;
import it.dhd.oxygencustomizer.xposed.utils.SystemUtils;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.ABaseTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.*;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.AccordionTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.BackgroundToForegroundTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.CubeInTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.CubeOutTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.DepthPageTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.FadeTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.ForegroundToBackgroundTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.RaiseFromCenterTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.RotateAboutBottomTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.RotateDownTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.RotateUpTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.StackTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.TabletTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.TranslationYTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.ZoomInTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.ZoomOutSlideTransformer;
import it.dhd.oxygencustomizer.xposed.utils.viewpager.ZoomOutTransformer;

public class QsTileCustomization extends XposedMods {

Expand Down Expand Up @@ -473,6 +481,10 @@ private ViewPager.PageTransformer getCustomTransitions() {
case 12 -> new ZoomInTransformer();
case 13 -> new ZoomOutTransformer();
case 14 -> new ZoomOutSlideTransformer();
case 15 -> new RaiseFromCenterTransformer();
case 16 -> new RotateAboutBottomTransformer();
case 17 -> new TranslationYTransformer(TranslationYTransformer.TOP_TO_BOTTOM);
case 18 -> new TranslationYTransformer(TranslationYTransformer.BOTTOM_TO_TOP);
default -> null;
};

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package it.dhd.oxygencustomizer.xposed.utils.viewpager;

import android.view.View;

import androidx.annotation.NonNull;

public class RaiseFromCenterTransformer extends ABaseTransformer {

protected void onTransform(@NonNull View page, float position) {
int width = page.getWidth(), height = page.getHeight();

if (position < -1) {
page.setTranslationX(0);
} else if (position < 0) {

float scale = 1 + position;
page.setPivotX(width/2);
page.setPivotY(height/2);
page.setScaleY(scale);
page.setScaleX(scale);
// Counteract the default motion
page.setTranslationX(-position*width);
} else if (position < 1) {
float scale = 1 - position;
page.setPivotX(width/2);
page.setPivotY(height/2);
page.setScaleY(scale);
page.setScaleX(scale);
// Counteract the default motion
page.setTranslationX(-width * position);

} else {
page.setTranslationX(0);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package it.dhd.oxygencustomizer.xposed.utils.viewpager;

import android.view.View;

public class RotateAboutBottomTransformer extends ABaseTransformer {
protected void onTransform(View view, float position) {
final float width = view.getWidth(), height = view.getHeight();
view.setPivotX(width / 2);
view.setPivotY(height);
view.setRotation(position * 20);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package it.dhd.oxygencustomizer.xposed.utils.viewpager;

import android.view.View;

import androidx.annotation.NonNull;

public class TranslationYTransformer extends ABaseTransformer {
public static final int TOP_TO_BOTTOM = 1, BOTTOM_TO_TOP = 2;
public int ANIMATE_TYPE = 2;

public TranslationYTransformer(){

}

public TranslationYTransformer(int ANIMATE_TYPE) {
this.ANIMATE_TYPE = ANIMATE_TYPE;
}

protected void onTransform(@NonNull View page, float position) {

int width = page.getWidth(), height = page.getHeight();

if (position <= 0) {
// This page is way off-screen to the left.
page.setTranslationX(0);
} else if (position <= 1) {
// Log.d("POSITION", position * height + "!!");
if (ANIMATE_TYPE == TOP_TO_BOTTOM) {
page.setTranslationY(-position * (height));
} else if (ANIMATE_TYPE == BOTTOM_TO_TOP) {
page.setTranslationY(position * (height));
}
} else {
// This page is way off-screen to the right.
page.setTranslationX(0);

}
}
}
8 changes: 8 additions & 0 deletions app/src/main/res/values/arrays.xml
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,10 @@
<item>@string/qs_transitions_zoom_in</item>
<item>@string/qs_transitions_zoom_out</item>
<item>@string/qs_transitions_zoom_out_slide</item>
<item>@string/qs_transitions_raise_from_center</item>
<item>@string/qs_transitions_rotate_about_bottom</item>
<item>@string/qs_transitions_translate_y_ttb</item>
<item>@string/qs_transitions_translate_y_btt</item>
</string-array>

<string-array name="qs_transitions_values" translatable="false">
Expand All @@ -391,6 +395,10 @@
<item>12</item>
<item>13</item>
<item>14</item>
<item>15</item>
<item>16</item>
<item>17</item>
<item>18</item>
</string-array>

</resources>
4 changes: 4 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,10 @@
<string name="qs_transitions_zoom_in">Zoom in</string>
<string name="qs_transitions_zoom_out">Zoom out</string>
<string name="qs_transitions_zoom_out_slide">Zoom out slide</string>
<string name="qs_transitions_raise_from_center">Raise from center</string>
<string name="qs_transitions_rotate_about_bottom">Rotate about bottom</string>
<string name="qs_transitions_translate_y_ttb">Translate Y top to bottom</string>
<string name="qs_transitions_translate_y_btt">Translate Y bottom to top</string>

<!-- QS Header Image Strings -->
<string name="qs_header_image_title">Header image</string>
Expand Down

0 comments on commit 7a8e958

Please sign in to comment.