diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java index 6f3e5d027..6c14e1549 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java @@ -112,6 +112,7 @@ import static android.os.Build.VERSION_CODES; import static org.kiwix.kiwixmobile.main.TableDrawerAdapter.DocumentSection; import static org.kiwix.kiwixmobile.main.TableDrawerAdapter.TableClickListener; import static org.kiwix.kiwixmobile.search.SearchActivity.EXTRA_SEARCH_IN_TEXT; +import static org.kiwix.kiwixmobile.utils.AnimationUtils.rotate; import static org.kiwix.kiwixmobile.utils.Constants.BOOKMARK_CHOSEN_REQUEST; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_CHOSE_X_TITLE; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_CHOSE_X_URL; @@ -195,6 +196,8 @@ public class MainActivity extends BaseActivity implements WebViewCallback, RecyclerView tabRecyclerView; @BindView(R.id.activity_main_tab_switcher) View tabSwitcherRoot; + @BindView(R.id.tab_switcher_close_all_tabs) + FloatingActionButton closeAllTabsButton; private CountDownTimer hideBackToTopTimer = new CountDownTimer(1200, 1200) { @Override public void onTick(long millisUntilFinished) { @@ -512,6 +515,8 @@ public class MainActivity extends BaseActivity implements WebViewCallback, actionBar.setDisplayShowTitleEnabled(true); drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); + closeAllTabsButton.setImageDrawable( + ContextCompat.getDrawable(this, R.drawable.ic_close_white_24dp)); tabSwitcherRoot.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); contentFrame.setVisibility(View.VISIBLE); @@ -783,17 +788,10 @@ public class MainActivity extends BaseActivity implements WebViewCallback, updateTabSwitcherIcon(); }) .show(); - openDefaultTab(); + openHomeScreen(); updateTabSwitcherIcon(); } - private void openDefaultTab() { - new Handler().postDelayed(() -> { - if (webViewList.size() == 0) { - newTab(HOME_URL); - } - }, 100); - } private void selectTab(int position) { currentWebViewIndex = position; tabsAdapter.setSelected(position); @@ -1162,12 +1160,23 @@ public class MainActivity extends BaseActivity implements WebViewCallback, @OnClick(R.id.tab_switcher_close_all_tabs) void closeAllTabs() { + rotate(closeAllTabsButton); webViewList.clear(); tabsAdapter.notifyDataSetChanged(); - openDefaultTab(); + openHomeScreen(); updateTabSwitcherIcon(); } + //opens home screen when user closes all tabs + private void openHomeScreen() { + new Handler().postDelayed(() -> { + if (webViewList.size() == 0) { + newTab(HOME_URL); + hideTabSwitcher(); + } + }, 300); + } + @OnClick(R.id.bottom_toolbar_bookmark) public void toggleBookmark() { //Check maybe need refresh diff --git a/app/src/main/java/org/kiwix/kiwixmobile/utils/AnimationUtils.java b/app/src/main/java/org/kiwix/kiwixmobile/utils/AnimationUtils.java index 6d151702c..ad0cab05e 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/utils/AnimationUtils.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/utils/AnimationUtils.java @@ -3,7 +3,11 @@ package org.kiwix.kiwixmobile.utils; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; +import android.view.animation.RotateAnimation; import android.view.animation.Transformation; +import androidx.core.content.ContextCompat; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import org.kiwix.kiwixmobile.R; public class AnimationUtils { public static void expand(final View view) { @@ -61,4 +65,29 @@ public class AnimationUtils { (int) (initialHeight / view.getContext().getResources().getDisplayMetrics().density)); view.startAnimation(animation); } + + //rotate animation for closeAllTabs FAB + public static void rotate(FloatingActionButton v) { + RotateAnimation wheelRotation = + new RotateAnimation(0.0f, 360f, v.getWidth() / 2.0f, v.getHeight() / 2.0f); + wheelRotation.setDuration(200); + wheelRotation.setRepeatCount(0); + wheelRotation.setInterpolator(v.getContext(), android.R.interpolator.cycle); + v.startAnimation(wheelRotation); + wheelRotation.setAnimationListener(new Animation.AnimationListener() { + + public void onAnimationEnd(Animation animation) { + v.setImageDrawable( + ContextCompat.getDrawable(v.getContext(), R.drawable.ic_done_white_24dp)); + } + + public void onAnimationRepeat(Animation animation) { + } + + public void onAnimationStart(Animation animation) { + v.setImageDrawable( + ContextCompat.getDrawable(v.getContext(), R.drawable.ic_close_white_24dp)); + } + }); + } } diff --git a/app/src/main/res/drawable/ic_clear_white_24dp.xml b/app/src/main/res/drawable/ic_clear_white_24dp.xml index da4c8477c..59eb95044 100644 --- a/app/src/main/res/drawable/ic_clear_white_24dp.xml +++ b/app/src/main/res/drawable/ic_clear_white_24dp.xml @@ -1,9 +1,10 @@ diff --git a/app/src/main/res/drawable/ic_close_white_24dp.xml b/app/src/main/res/drawable/ic_close_white_24dp.xml new file mode 100644 index 000000000..4a1ffc298 --- /dev/null +++ b/app/src/main/res/drawable/ic_close_white_24dp.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_done_white_24dp.xml b/app/src/main/res/drawable/ic_done_white_24dp.xml new file mode 100644 index 000000000..a5a210272 --- /dev/null +++ b/app/src/main/res/drawable/ic_done_white_24dp.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/tab_switcher.xml b/app/src/main/res/layout/tab_switcher.xml index f28a80489..fc51c5089 100644 --- a/app/src/main/res/layout/tab_switcher.xml +++ b/app/src/main/res/layout/tab_switcher.xml @@ -21,10 +21,10 @@ android:layout_height="wrap_content" android:layout_marginBottom="24dp" android:contentDescription="@string/close_all_tabs" - app:backgroundTint="@android:color/black" + app:backgroundTint="@android:color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:srcCompat="@drawable/ic_clear_white_24dp" + app:srcCompat="@drawable/ic_close_white_24dp" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index be87d0648..f4887b83b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -25,6 +25,8 @@ #962e7ac4 #4285F4 #000000 + #4CAF50 + #000000 #DE000000