diff options
author | Paul Keith <javelinanddart@gmail.com> | 2019-02-18 00:04:57 +0100 |
---|---|---|
committer | Paul Keith <javelinanddart@gmail.com> | 2019-05-14 04:12:54 +0200 |
commit | 70f6d6b61ee17d6fd0310b17fd6aaacbb3272de2 (patch) | |
tree | 82c318e33648bf98a2501e20116e1f35bf4759ab | |
parent | 9cb69f81bd7da9e8b0c9fdeb8d654dac4f26958f (diff) | |
download | lineage-sdk-70f6d6b61ee17d6fd0310b17fd6aaacbb3272de2.tar.gz lineage-sdk-70f6d6b61ee17d6fd0310b17fd6aaacbb3272de2.tar.bz2 lineage-sdk-70f6d6b61ee17d6fd0310b17fd6aaacbb3272de2.zip |
sdk: Change night/day mode transition behavior
* Update 2x a minute rather than 1x a minute as a result of dropping
TWILIGHT_ADJUSTMENT_TIME from 1hr to 30min in an earlier change
* Use an AccelerateDecelerateInterpolator for transitioning from day
to night mode and back to make the transition smoother for the user
* Update copyright while we're at it
Change-Id: I438f265c6cd9a2487b75744beccaf2bbac21b36e
-rw-r--r-- | lineage/lib/main/java/org/lineageos/platform/internal/display/ColorTemperatureController.java | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/display/ColorTemperatureController.java b/lineage/lib/main/java/org/lineageos/platform/internal/display/ColorTemperatureController.java index 40bc681f..9e7fd73e 100644 --- a/lineage/lib/main/java/org/lineageos/platform/internal/display/ColorTemperatureController.java +++ b/lineage/lib/main/java/org/lineageos/platform/internal/display/ColorTemperatureController.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2016 The CyanogenMod Project + * 2018-2019 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +25,7 @@ import android.text.format.DateUtils; import android.util.MathUtils; import android.util.Range; import android.util.Slog; -import android.view.animation.LinearInterpolator; +import android.view.animation.AccelerateDecelerateInterpolator; import org.lineageos.platform.internal.display.TwilightTracker.TwilightState; @@ -58,6 +59,7 @@ public class ColorTemperatureController extends LiveDisplayFeature { private int mDayTemperature; private int mNightTemperature; + private AccelerateDecelerateInterpolator mInterpolator; private ValueAnimator mAnimator; private final LineageHardwareManager mHardware; @@ -97,6 +99,8 @@ public class ColorTemperatureController extends LiveDisplayFeature { mColorTemperatureRange.getLower(), mDefaultDayTemperature, mColorTemperatureRange.getUpper()); + + mInterpolator = new AccelerateDecelerateInterpolator(); } @Override @@ -202,8 +206,8 @@ public class ColorTemperatureController extends LiveDisplayFeature { setDisplayTemperature(temperature); if (isTransitioning()) { - // fire again in a minute - mHandler.postDelayed(mTransitionRunnable, DateUtils.MINUTE_IN_MILLIS); + // fire again in 30 seconds + mHandler.postDelayed(mTransitionRunnable, DateUtils.MINUTE_IN_MILLIS / 2); } } @@ -234,7 +238,7 @@ public class ColorTemperatureController extends LiveDisplayFeature { mAnimator = ValueAnimator.ofInt(current, balance); mAnimator.setDuration(duration); - mAnimator.setInterpolator(new LinearInterpolator()); + mAnimator.setInterpolator(mInterpolator); mAnimator.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(final ValueAnimator animation) { @@ -291,7 +295,7 @@ public class ColorTemperatureController extends LiveDisplayFeature { * @param sunrise * @return float between 0 and 1 */ - private static float adj(long now, long sunset, long sunrise) { + private float adj(long now, long sunset, long sunrise) { if (sunset < 0 || sunrise < 0 || now < (sunset - TWILIGHT_ADJUSTMENT_TIME) || now > (sunrise + TWILIGHT_ADJUSTMENT_TIME)) { @@ -301,12 +305,12 @@ public class ColorTemperatureController extends LiveDisplayFeature { // Scale the transition into night mode in 0.5hr before civil sunset if (now <= sunset) { - return (float) (sunset - now) / TWILIGHT_ADJUSTMENT_TIME; + return mInterpolator.getInterpolation((float) (sunset - now) / TWILIGHT_ADJUSTMENT_TIME); } // Scale the transition into day mode in 0.5hr after civil sunrise if (now >= sunrise) { - return (float) (now - sunrise) / TWILIGHT_ADJUSTMENT_TIME; + return mInterpolator.getInterpolation((float) (now - sunrise) / TWILIGHT_ADJUSTMENT_TIME); } // More than 0.5hr past civil sunset |