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