From 94cd195dc72ed389d69d3168af97dbd7af2d384e Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Fri, 1 May 2020 13:45:51 -0700 Subject: [PATCH] Adds swipe to delete tab (#10355) * No Issue - Increases tap area of close button * For #10331 - Adds swipe to delete to the tab tray --- .../mozilla/fenix/tabtray/TabTrayFragment.kt | 5 +++++ .../mozilla/fenix/tabtray/TabsTouchHelper.kt | 17 +++++++++++++++++ app/src/main/res/layout/tab_tray_item.xml | 8 ++------ 3 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/org/mozilla/fenix/tabtray/TabsTouchHelper.kt diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayFragment.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayFragment.kt index a0a1de23c..0dcbb43e1 100644 --- a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayFragment.kt @@ -21,6 +21,7 @@ import org.mozilla.fenix.ext.requireComponents import androidx.navigation.fragment.findNavController import mozilla.components.browser.session.Session import mozilla.components.browser.session.SessionManager +import mozilla.components.browser.tabstray.BrowserTabsTray import mozilla.components.concept.tabstray.Tab import mozilla.components.concept.tabstray.TabsTray import org.mozilla.fenix.BrowserDirection @@ -51,6 +52,10 @@ class TabTrayFragment : Fragment(R.layout.fragment_tab_tray), TabsTray.Observer, showToolbar(getString(R.string.tab_tray_title)) onTabsChanged() + (tabsTray as? BrowserTabsTray)?.also { tray -> + TabsTouchHelper(tray.tabsAdapter).attachToRecyclerView(tray) + } + sessionManager.register(observer = object : SessionManager.Observer { override fun onSessionAdded(session: Session) { onTabsChanged() diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabsTouchHelper.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabsTouchHelper.kt new file mode 100644 index 000000000..b1d47985f --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabsTouchHelper.kt @@ -0,0 +1,17 @@ +/* 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.fenix.tabtray + +import androidx.recyclerview.widget.ItemTouchHelper +import mozilla.components.browser.tabstray.TabTouchCallback +import mozilla.components.concept.tabstray.TabsTray +import mozilla.components.support.base.observer.Observable + +class TabsTouchHelper(observable: Observable) : + ItemTouchHelper(object : TabTouchCallback(observable) { + override fun alphaForItemSwipe(dX: Float, distanceToAlphaMin: Int): Float { + return 1f - 2f * Math.abs(dX) / distanceToAlphaMin + } + }) diff --git a/app/src/main/res/layout/tab_tray_item.xml b/app/src/main/res/layout/tab_tray_item.xml index 29da53c27..81b047041 100644 --- a/app/src/main/res/layout/tab_tray_item.xml +++ b/app/src/main/res/layout/tab_tray_item.xml @@ -44,7 +44,6 @@ android:textSize="16sp" android:paddingTop="22dp" android:paddingStart="16dp" - android:layout_marginEnd="20dp" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintEnd_toStartOf="@id/mozac_browser_tabstray_close" app:layout_constraintStart_toEndOf="@id/mozac_browser_tabstray_card" @@ -59,7 +58,6 @@ android:lines="1" android:textSize="14sp" android:paddingStart="16dp" - android:layout_marginEnd="20dp" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintEnd_toStartOf="@id/mozac_browser_tabstray_close" app:layout_constraintStart_toEndOf="@id/mozac_browser_tabstray_card" @@ -67,10 +65,8 @@