summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/util/MultiStateAlphaController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/util/MultiStateAlphaController.java')
-rw-r--r--src/com/android/launcher3/util/MultiStateAlphaController.java119
1 files changed, 0 insertions, 119 deletions
diff --git a/src/com/android/launcher3/util/MultiStateAlphaController.java b/src/com/android/launcher3/util/MultiStateAlphaController.java
deleted file mode 100644
index 956fc9eba..000000000
--- a/src/com/android/launcher3/util/MultiStateAlphaController.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3.util;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ValueAnimator;
-import android.animation.ValueAnimator.AnimatorUpdateListener;
-import android.content.Context;
-import android.view.View;
-import android.view.accessibility.AccessibilityManager;
-
-import java.util.Arrays;
-
-/**
- * A utility class which divides the alpha for a view across multiple states.
- */
-public class MultiStateAlphaController {
-
- private final View mTargetView;
- private final float[] mAlphas;
- private final AccessibilityManager mAm;
- private int mZeroAlphaListenerCount = 0;
-
- public MultiStateAlphaController(View view, int stateCount) {
- mTargetView = view;
- mAlphas = new float[stateCount];
- Arrays.fill(mAlphas, 1);
-
- mAm = (AccessibilityManager) view.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
- }
-
- public void setAlphaAtIndex(float alpha, int index) {
- mAlphas[index] = alpha;
- updateAlpha();
- }
-
- private void updateAlpha() {
- // Only update the alpha if no zero-alpha animation is running.
- if (mZeroAlphaListenerCount > 0) {
- return;
- }
- float finalAlpha = 1;
- for (float a : mAlphas) {
- finalAlpha = finalAlpha * a;
- }
- mTargetView.setAlpha(finalAlpha);
- mTargetView.setVisibility(finalAlpha > 0 ? View.VISIBLE
- : (mAm.isEnabled() ? View.GONE : View.INVISIBLE));
- }
-
- /**
- * Returns an animator which changes the alpha at the index {@param index}
- * to {@param finalAlpha}. Alphas at other index are not affected.
- */
- public Animator animateAlphaAtIndex(float finalAlpha, final int index) {
- final ValueAnimator anim;
-
- if (Float.compare(finalAlpha, mAlphas[index]) == 0) {
- // Return a dummy animator to avoid null checks.
- anim = ValueAnimator.ofFloat(0, 0);
- } else {
- ValueAnimator animator = ValueAnimator.ofFloat(mAlphas[index], finalAlpha);
- animator.addUpdateListener(new AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator valueAnimator) {
- float value = (Float) valueAnimator.getAnimatedValue();
- setAlphaAtIndex(value, index);
- }
- });
- anim = animator;
- }
-
- if (Float.compare(finalAlpha, 0f) == 0) {
- // In case when any channel is animating to 0, and the current alpha is also 0, do not
- // update alpha of the target view while the animation is running.
- // We special case '0' because if any channel is set to 0, values of other
- // channels do not matter.
- anim.addListener(new ZeroAlphaAnimatorListener());
- }
- return anim;
- }
-
- private class ZeroAlphaAnimatorListener extends AnimatorListenerAdapter {
-
- private boolean mStartedAtZero = false;
-
- @Override
- public void onAnimationStart(Animator animation) {
- mStartedAtZero = Float.compare(mTargetView.getAlpha(), 0f) == 0;
- if (mStartedAtZero) {
- mZeroAlphaListenerCount++;
- mTargetView.setAlpha(0);
- }
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- if (mStartedAtZero) {
- mZeroAlphaListenerCount--;
- updateAlpha();
- }
- }
- }
-}