Bug 1310081 - THIS COMMIT WILL BE FOLDED INTO 2 ONCE
BUG 1313144 IS IN THE TREE. Fix tabs grid animator issues.
MozReview-Commit-ID: 6hrhK4Nticu
--- a/mobile/android/base/java/org/mozilla/gecko/tabs/TabsGridLayout.java
+++ b/mobile/android/base/java/org/mozilla/gecko/tabs/TabsGridLayout.java
@@ -5,17 +5,16 @@
package org.mozilla.gecko.tabs;
import org.mozilla.gecko.R;
import org.mozilla.gecko.widget.GridSpacingDecoration;
import android.content.Context;
import android.content.res.Resources;
-import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.util.AttributeSet;
public class TabsGridLayout extends TabsLayout {
private final GridSpacingDecoration spacingDecoration;
public TabsGridLayout(Context context, AttributeSet attrs) {
@@ -33,23 +32,17 @@ public class TabsGridLayout extends Tabs
final int viewPaddingVertical = resources.getDimensionPixelSize(R.dimen.tab_panel_grid_vpadding);
setDesiredColumnWidth(itemWidth + 2 * horizontalItemPadding);
setPadding(viewPaddingHorizontal, viewPaddingVertical, viewPaddingHorizontal, viewPaddingVertical);
setClipToPadding(false);
setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
- final DefaultItemAnimator animator = new DefaultItemAnimator();
- // On close we only animate the moves, not the remove.
- animator.setRemoveDuration(0);
- // A fade in/out each time the title/thumbnail/etc. gets updated isn't helpful, so disable
- // the change animation.
- animator.setSupportsChangeAnimations(false);
- setItemAnimator(animator);
+ setItemAnimator(new TabsGridLayoutAnimator());
// A TouchHelper handler for swipe to close.
final TabsTouchHelperCallback callback = new TabsTouchHelperCallback(this) {
@Override
protected float alphaForItemSwipeDx(float dX, int distanceToAlphaMin) {
return 1f - 2f * Math.abs(dX) / distanceToAlphaMin;
}
};
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/tabs/TabsGridLayoutAnimator.java
@@ -0,0 +1,18 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.gecko.tabs;
+
+import org.mozilla.gecko.widget.NoChangeItemAnimator;
+
+import android.support.v7.widget.RecyclerView;
+
+class TabsGridLayoutAnimator extends NoChangeItemAnimator {
+ @Override
+ public boolean animateRemove(final RecyclerView.ViewHolder holder) {
+ dispatchRemoveFinished(holder);
+ return false;
+ }
+}
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -664,16 +664,17 @@ gbjar.sources += ['java/org/mozilla/geck
'tabs/PrivateTabsPanel.java',
'tabs/TabCurve.java',
'tabs/TabHistoryController.java',
'tabs/TabHistoryFragment.java',
'tabs/TabHistoryItemRow.java',
'tabs/TabHistoryPage.java',
'tabs/TabPanelBackButton.java',
'tabs/TabsGridLayout.java',
+ 'tabs/TabsGridLayoutAnimator.java',
'tabs/TabsLayout.java',
'tabs/TabsLayoutAdapter.java',
'tabs/TabsLayoutItemView.java',
'tabs/TabsListLayout.java',
'tabs/TabsListLayoutAnimator.java',
'tabs/TabsPanel.java',
'tabs/TabsPanelThumbnailView.java',
'tabs/TabsTouchHelperCallback.java',