summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2017-06-06 16:43:59 -0700
committerSunny Goyal <sunnygoyal@google.com>2017-06-06 16:48:25 -0700
commit966d901af0fd319aa2b62d6abccc5ac728e68423 (patch)
tree9f266716edfa144c26bde916aad2f8b2cb3ec48e /src/com
parentb434fde42702000cfb8eacfdfc85c2f759be0a75 (diff)
downloadandroid_packages_apps_Trebuchet-966d901af0fd319aa2b62d6abccc5ac728e68423.tar.gz
android_packages_apps_Trebuchet-966d901af0fd319aa2b62d6abccc5ac728e68423.tar.bz2
android_packages_apps_Trebuchet-966d901af0fd319aa2b62d6abccc5ac728e68423.zip
Removing QsbBlockerView
> Removing workspace state change listener. State change happens with hardware layer, so children should not be calling invalidatge() during the animation > Moving QSB inside the QSB and removing a floating layout Bug: 37616877 Change-Id: I9af3522a05dafa5796586bb64f512d98688caf79
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/launcher3/DeviceProfile.java8
-rw-r--r--src/com/android/launcher3/Launcher.java9
-rw-r--r--src/com/android/launcher3/PinchAnimationManager.java9
-rw-r--r--src/com/android/launcher3/Workspace.java90
-rw-r--r--src/com/android/launcher3/WorkspaceStateTransitionAnimation.java21
-rw-r--r--src/com/android/launcher3/qsb/QsbBlockerView.java93
-rw-r--r--src/com/android/launcher3/util/MultiStateAlphaController.java119
7 files changed, 8 insertions, 341 deletions
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 508fc3406..9bb56d603 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -532,14 +532,6 @@ public class DeviceProfile {
workspacePadding.bottom);
workspace.setPageSpacing(getWorkspacePageSpacing());
- // Only display when enabled
- if (FeatureFlags.QSB_ON_FIRST_SCREEN) {
- View qsbContainer = launcher.getQsbContainer();
- lp = (FrameLayout.LayoutParams) qsbContainer.getLayoutParams();
- lp.topMargin = mInsets.top + workspacePadding.top;
- qsbContainer.setLayoutParams(lp);
- }
-
// Layout the hotseat
Hotseat hotseat = (Hotseat) launcher.findViewById(R.id.hotseat);
lp = (FrameLayout.LayoutParams) hotseat.getLayoutParams();
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 909853e06..d23badc58 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -224,7 +224,6 @@ public class Launcher extends BaseActivity
private View mLauncherView;
@Thunk DragLayer mDragLayer;
private DragController mDragController;
- private View mQsbContainer;
public View mWeightWatcher;
@@ -1278,9 +1277,7 @@ public class Launcher extends BaseActivity
private void setupViews() {
mDragLayer = (DragLayer) findViewById(R.id.drag_layer);
mFocusHandler = mDragLayer.getFocusIndicatorHelper();
- mWorkspace = (Workspace) mDragLayer.findViewById(R.id.workspace);
- mQsbContainer = mDragLayer.findViewById(mDeviceProfile.isVerticalBarLayout()
- ? R.id.workspace_blocked_row : R.id.qsb_container);
+ mWorkspace = mDragLayer.findViewById(R.id.workspace);
mWorkspace.initParentViews(mDragLayer);
mLauncherView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
@@ -1667,10 +1664,6 @@ public class Launcher extends BaseActivity
return mWorkspace;
}
- public View getQsbContainer() {
- return mQsbContainer;
- }
-
public Hotseat getHotseat() {
return mHotseat;
}
diff --git a/src/com/android/launcher3/PinchAnimationManager.java b/src/com/android/launcher3/PinchAnimationManager.java
index f8196e5f6..c3d3bb3df 100644
--- a/src/com/android/launcher3/PinchAnimationManager.java
+++ b/src/com/android/launcher3/PinchAnimationManager.java
@@ -56,11 +56,10 @@ public class PinchAnimationManager {
private static final LinearInterpolator INTERPOLATOR = new LinearInterpolator();
private static final int INDEX_HOTSEAT = 0;
- private static final int INDEX_QSB = 1;
- private static final int INDEX_OVERVIEW_PANEL_BUTTONS = 2;
- private static final int INDEX_SCRIM = 3;
+ private static final int INDEX_OVERVIEW_PANEL_BUTTONS = 1;
+ private static final int INDEX_SCRIM = 2;
- private final Animator[] mAnimators = new Animator[4];
+ private final Animator[] mAnimators = new Animator[3];
private Launcher mLauncher;
private Workspace mWorkspace;
@@ -196,8 +195,6 @@ public class PinchAnimationManager {
private void animateHotseatAndQsb(boolean show) {
startAnimator(INDEX_HOTSEAT,
mWorkspace.createHotseatAlphaAnimator(show ? 1 : 0), THRESHOLD_ANIM_DURATION);
- startAnimator(INDEX_QSB, mWorkspace.mQsbAlphaController.animateAlphaAtIndex(
- show ? 1 : 0, Workspace.QSB_ALPHA_INDEX_STATE_CHANGE), THRESHOLD_ANIM_DURATION);
}
private void animateOverviewPanelButtons(boolean show) {
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index ea4a662d3..ce92c8eb0 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -80,7 +80,6 @@ import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
import com.android.launcher3.util.ItemInfoMatcher;
import com.android.launcher3.util.LongArrayMap;
-import com.android.launcher3.util.MultiStateAlphaController;
import com.android.launcher3.util.PackageUserKey;
import com.android.launcher3.util.Thunk;
import com.android.launcher3.util.VerticalFlingDetector;
@@ -234,14 +233,6 @@ public class Workspace extends PagedView
*/
private float[] mHotseatAlpha = new float[] {1, 1, 1};
- public static final int QSB_ALPHA_INDEX_STATE_CHANGE = 0;
- public static final int QSB_ALPHA_INDEX_Y_TRANSLATION = 1;
- public static final int QSB_ALPHA_INDEX_PAGE_SCROLL = 2;
- public static final int QSB_ALPHA_INDEX_OVERLAY_SCROLL = 3;
-
-
- MultiStateAlphaController mQsbAlphaController;
-
@ViewDebug.ExportedProperty(category = "launcher")
private State mState = State.NORMAL;
private boolean mIsSwitchingState = false;
@@ -323,7 +314,6 @@ public class Workspace extends PagedView
private WorkspaceStateTransitionAnimation mStateTransitionAnimation;
private AccessibilityDelegate mPagesAccessibilityDelegate;
- private OnStateChangeListener mOnStateChangeListener;
/**
* Used to inflate the Workspace from XML.
@@ -378,10 +368,6 @@ public class Workspace extends PagedView
}
}
- public void setOnStateChangeListener(OnStateChangeListener listener) {
- mOnStateChangeListener = listener;
- }
-
/**
* Estimates the size of an item using spans: hSpan, vSpan.
*
@@ -536,7 +522,6 @@ public class Workspace extends PagedView
public void initParentViews(View parent) {
super.initParentViews(parent);
mPageIndicator.setAccessibilityDelegate(new OverviewAccessibilityDelegate());
- mQsbAlphaController = new MultiStateAlphaController(mLauncher.getQsbContainer(), 4);
}
private int getDefaultPage() {
@@ -576,11 +561,6 @@ public class Workspace extends PagedView
return mTouchState != TOUCH_STATE_REST;
}
- private int getEmbeddedQsbId() {
- return mLauncher.getDeviceProfile().isVerticalBarLayout()
- ? R.id.qsb_container : R.id.workspace_blocked_row;
- }
-
/**
* Initializes and binds the first page
* @param qsb an existing qsb to recycle or null.
@@ -622,41 +602,17 @@ public class Workspace extends PagedView
if (qsb == null) {
// In transposed layout, we add the QSB in the Grid. As workspace does not touch the
// edges, we do not need a full width QSB.
- qsb = LayoutInflater.from(getContext()).inflate(
- mLauncher.getDeviceProfile().isVerticalBarLayout()
- ? R.layout.qsb_container : R.layout.qsb_blocker_view,
- firstPage, false);
+ qsb = LayoutInflater.from(getContext())
+ .inflate(R.layout.qsb_container,firstPage, false);
}
CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, firstPage.getCountX(), 1);
lp.canReorder = false;
- if (!firstPage.addViewToCellLayout(qsb, 0, getEmbeddedQsbId(), lp, true)) {
+ if (!firstPage.addViewToCellLayout(qsb, 0, R.id.qsb_container, lp, true)) {
Log.e(TAG, "Failed to add to item at (0, 0) to CellLayout");
}
}
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-
- // Update the QSB to match the cell height. This is treating the QSB essentially as a child
- // of workspace despite that it's not a true child.
- // Note that it relies on the strict ordering of measuring the workspace before the QSB
- // at the dragLayer level.
- // Only measure the QSB when the view is enabled
- if (FeatureFlags.QSB_ON_FIRST_SCREEN && getChildCount() > 0) {
- CellLayout firstPage = (CellLayout) getChildAt(0);
- int cellHeight = firstPage.getCellHeight();
-
- View qsbContainer = mLauncher.getQsbContainer();
- ViewGroup.LayoutParams lp = qsbContainer.getLayoutParams();
- if (cellHeight > 0 && lp.height != cellHeight) {
- lp.height = cellHeight;
- qsbContainer.setLayoutParams(lp);
- }
- }
- }
-
public void removeAllWorkspaceScreens() {
// Disable all layout transitions before removing all pages to ensure that we don't get the
// transition animations competing with us changing the scroll when we add pages or the
@@ -670,7 +626,7 @@ public class Workspace extends PagedView
}
// Recycle the QSB widget
- View qsb = findViewById(getEmbeddedQsbId());
+ View qsb = findViewById(R.id.qsb_container);
if (qsb != null) {
((ViewGroup) qsb.getParent()).removeView(qsb);
}
@@ -1406,17 +1362,9 @@ public class Workspace extends PagedView
super.scrollTo(x, y);
}
- private void onWorkspaceOverallScrollChanged() {
- if (!mIgnoreQsbScroll) {
- mLauncher.getQsbContainer().setTranslationX(
- mOverlayTranslation + mFirstPageScrollX - getScrollX());
- }
- }
-
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
- onWorkspaceOverallScrollChanged();
// Update the page indicator progress.
boolean isTransitioning = mIsSwitchingState
@@ -1497,9 +1445,6 @@ public class Workspace extends PagedView
// device I've tried, translating the launcher causes things to get quite laggy.
setWorkspaceTranslationAndAlpha(Direction.X, transX, alpha);
setHotseatTranslationAndAlpha(Direction.X, transX, alpha);
- onWorkspaceOverallScrollChanged();
-
- mQsbAlphaController.setAlphaAtIndex(alpha, QSB_ALPHA_INDEX_OVERLAY_SCROLL);
}
/**
@@ -1509,9 +1454,6 @@ public class Workspace extends PagedView
*/
public void setWorkspaceYTranslationAndAlpha(float translation, float alpha) {
setWorkspaceTranslationAndAlpha(Direction.Y, translation, alpha);
-
- mLauncher.getQsbContainer().setTranslationY(translation);
- mQsbAlphaController.setAlphaAtIndex(alpha, QSB_ALPHA_INDEX_Y_TRANSLATION);
}
/**
@@ -1707,10 +1649,6 @@ public class Workspace extends PagedView
float scrollProgress = getScrollProgress(screenCenter, child, i);
float alpha = 1 - Math.abs(scrollProgress);
child.getShortcutsAndWidgets().setAlpha(alpha);
-
- if (isQsbContainerPage(i)) {
- mQsbAlphaController.setAlphaAtIndex(alpha, QSB_ALPHA_INDEX_PAGE_SCROLL);
- }
}
}
}
@@ -1805,7 +1743,6 @@ public class Workspace extends PagedView
}
super.onLayout(changed, left, top, right, bottom);
mFirstPageScrollX = getScrollForPage(0);
- onWorkspaceOverallScrollChanged();
final LayoutTransition transition = getLayoutTransition();
// If the transition is running defer updating max scroll, as some empty pages could
@@ -1827,7 +1764,6 @@ public class Workspace extends PagedView
mIgnoreQsbScroll = false;
transition.removeTransitionListener(this);
mFirstPageScrollX = getScrollForPage(0);
- onWorkspaceOverallScrollChanged();
}
}
});
@@ -2070,10 +2006,6 @@ public class Workspace extends PagedView
mLauncher.notifyWidgetProvidersChanged();
}
- if (mOnStateChangeListener != null) {
- mOnStateChangeListener.prepareStateChange(toState, animated ? workspaceAnim : null);
- }
-
onPrepareStateTransition(mState.hasMultipleVisiblePages);
StateTransitionListener listener = new StateTransitionListener();
@@ -4230,20 +4162,6 @@ public class Workspace extends PagedView
}
}
- public interface OnStateChangeListener {
-
- /**
- * Called when the workspace state is changing.
- * @param toState final state
- * @param targetAnim animation which will be played during the transition or null.
- */
- void prepareStateChange(State toState, AnimatorSet targetAnim);
- }
-
- public static final boolean isQsbContainerPage(int pageNo) {
- return pageNo == 0;
- }
-
private class StateTransitionListener extends AnimatorListenerAdapter
implements AnimatorUpdateListener {
@Override
diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
index 482a2c93b..32deaf286 100644
--- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
+++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
@@ -355,27 +355,10 @@ public class WorkspaceStateTransitionAnimation {
cl.setBackgroundAlpha(finalBackgroundAlpha);
cl.setShortcutAndWidgetAlpha(finalAlpha);
}
-
- if (Workspace.isQsbContainerPage(i) &&
- states.stateIsNormal && mWorkspaceFadeInAdjacentScreens) {
- if (animated) {
- Animator anim = mWorkspace.mQsbAlphaController
- .animateAlphaAtIndex(finalAlpha, Workspace.QSB_ALPHA_INDEX_PAGE_SCROLL);
- anim.setDuration(duration);
- anim.setInterpolator(mZoomInInterpolator);
- mStateAnimator.play(anim);
- } else {
- mWorkspace.mQsbAlphaController.setAlphaAtIndex(
- finalAlpha, Workspace.QSB_ALPHA_INDEX_PAGE_SCROLL);
- }
- }
}
final ViewGroup overviewPanel = mLauncher.getOverviewPanel();
- Animator qsbAlphaAnimation = mWorkspace.mQsbAlphaController
- .animateAlphaAtIndex(finalQsbAlpha, Workspace.QSB_ALPHA_INDEX_STATE_CHANGE);
-
if (animated) {
Animator scale = LauncherAnimUtils.ofPropertyValuesHolder(mWorkspace,
new PropertyListBuilder().scale(mNewScale)
@@ -393,7 +376,6 @@ public class WorkspaceStateTransitionAnimation {
// For animation optimization, we may need to provide the Launcher transition
// with a set of views on which to force build and manage layers in certain scenarios.
layerViews.addView(overviewPanel);
- layerViews.addView(mLauncher.getQsbContainer());
layerViews.addView(mLauncher.getHotseat());
layerViews.addView(mWorkspace.getPageIndicator());
@@ -407,11 +389,9 @@ public class WorkspaceStateTransitionAnimation {
overviewPanelAlpha.setDuration(duration);
hotseatAlpha.setDuration(duration);
- qsbAlphaAnimation.setDuration(duration);
mStateAnimator.play(overviewPanelAlpha);
mStateAnimator.play(hotseatAlpha);
- mStateAnimator.play(qsbAlphaAnimation);
mStateAnimator.addListener(new AnimatorListenerAdapter() {
boolean canceled = false;
@Override
@@ -439,7 +419,6 @@ public class WorkspaceStateTransitionAnimation {
AlphaUpdateListener.updateVisibility(overviewPanel, accessibilityEnabled);
mWorkspace.getPageIndicator().setShouldAutoHide(!states.stateIsSpringLoaded);
- qsbAlphaAnimation.end();
mWorkspace.createHotseatAlphaAnimator(finalHotseatAlpha).end();
mWorkspace.updateCustomContentVisibility();
mWorkspace.setScaleX(mNewScale);
diff --git a/src/com/android/launcher3/qsb/QsbBlockerView.java b/src/com/android/launcher3/qsb/QsbBlockerView.java
deleted file mode 100644
index 5379336de..000000000
--- a/src/com/android/launcher3/qsb/QsbBlockerView.java
+++ /dev/null
@@ -1,93 +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.qsb;
-
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.animation.ValueAnimator;
-import android.animation.ValueAnimator.AnimatorUpdateListener;
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-import android.view.View;
-
-import com.android.launcher3.Launcher;
-import com.android.launcher3.Workspace;
-import com.android.launcher3.Workspace.OnStateChangeListener;
-import com.android.launcher3.Workspace.State;
-
-/**
- * A simple view used to show the region blocked by QSB during drag and drop.
- */
-public class QsbBlockerView extends View implements OnStateChangeListener {
-
- private static final int VISIBLE_ALPHA = 100;
-
- private final Paint mBgPaint;
-
- public QsbBlockerView(Context context, AttributeSet attrs) {
- super(context, attrs);
-
- mBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mBgPaint.setColor(Color.WHITE);
- mBgPaint.setAlpha(0);
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
-
- Workspace w = Launcher.getLauncher(getContext()).getWorkspace();
- w.setOnStateChangeListener(this);
- prepareStateChange(w.getState(), null);
- }
-
- @Override
- public void prepareStateChange(State toState, AnimatorSet targetAnim) {
- int finalAlpha = getAlphaForState(toState);
- if (targetAnim == null) {
- mBgPaint.setAlpha(finalAlpha);
- invalidate();
- } else {
- ObjectAnimator anim = ObjectAnimator.ofArgb(mBgPaint, "alpha", finalAlpha);
- anim.addUpdateListener(new AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator valueAnimator) {
- invalidate();
- }
- });
- targetAnim.play(anim);
- }
- }
-
- private static int getAlphaForState(State state) {
- switch (state) {
- case SPRING_LOADED:
- case OVERVIEW:
- case OVERVIEW_HIDDEN:
- return VISIBLE_ALPHA;
- }
- return 0;
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- canvas.drawPaint(mBgPaint);
- }
-}
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();
- }
- }
- }
-}