mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-16 02:48:08 -04:00
Added material design to closeAllTabs FAB (#1045)
This commit is contained in:
parent
3c8c9d459f
commit
6c07ca4649
@ -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.DocumentSection;
|
||||||
import static org.kiwix.kiwixmobile.main.TableDrawerAdapter.TableClickListener;
|
import static org.kiwix.kiwixmobile.main.TableDrawerAdapter.TableClickListener;
|
||||||
import static org.kiwix.kiwixmobile.search.SearchActivity.EXTRA_SEARCH_IN_TEXT;
|
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.BOOKMARK_CHOSEN_REQUEST;
|
||||||
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_CHOSE_X_TITLE;
|
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_CHOSE_X_TITLE;
|
||||||
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_CHOSE_X_URL;
|
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_CHOSE_X_URL;
|
||||||
@ -195,6 +196,8 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
|||||||
RecyclerView tabRecyclerView;
|
RecyclerView tabRecyclerView;
|
||||||
@BindView(R.id.activity_main_tab_switcher)
|
@BindView(R.id.activity_main_tab_switcher)
|
||||||
View tabSwitcherRoot;
|
View tabSwitcherRoot;
|
||||||
|
@BindView(R.id.tab_switcher_close_all_tabs)
|
||||||
|
FloatingActionButton closeAllTabsButton;
|
||||||
private CountDownTimer hideBackToTopTimer = new CountDownTimer(1200, 1200) {
|
private CountDownTimer hideBackToTopTimer = new CountDownTimer(1200, 1200) {
|
||||||
@Override
|
@Override
|
||||||
public void onTick(long millisUntilFinished) {
|
public void onTick(long millisUntilFinished) {
|
||||||
@ -512,6 +515,8 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
|||||||
actionBar.setDisplayShowTitleEnabled(true);
|
actionBar.setDisplayShowTitleEnabled(true);
|
||||||
|
|
||||||
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
|
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
|
||||||
|
closeAllTabsButton.setImageDrawable(
|
||||||
|
ContextCompat.getDrawable(this, R.drawable.ic_close_white_24dp));
|
||||||
tabSwitcherRoot.setVisibility(View.GONE);
|
tabSwitcherRoot.setVisibility(View.GONE);
|
||||||
progressBar.setVisibility(View.VISIBLE);
|
progressBar.setVisibility(View.VISIBLE);
|
||||||
contentFrame.setVisibility(View.VISIBLE);
|
contentFrame.setVisibility(View.VISIBLE);
|
||||||
@ -783,17 +788,10 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
|||||||
updateTabSwitcherIcon();
|
updateTabSwitcherIcon();
|
||||||
})
|
})
|
||||||
.show();
|
.show();
|
||||||
openDefaultTab();
|
openHomeScreen();
|
||||||
updateTabSwitcherIcon();
|
updateTabSwitcherIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openDefaultTab() {
|
|
||||||
new Handler().postDelayed(() -> {
|
|
||||||
if (webViewList.size() == 0) {
|
|
||||||
newTab(HOME_URL);
|
|
||||||
}
|
|
||||||
}, 100);
|
|
||||||
}
|
|
||||||
private void selectTab(int position) {
|
private void selectTab(int position) {
|
||||||
currentWebViewIndex = position;
|
currentWebViewIndex = position;
|
||||||
tabsAdapter.setSelected(position);
|
tabsAdapter.setSelected(position);
|
||||||
@ -1162,12 +1160,23 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
|||||||
|
|
||||||
@OnClick(R.id.tab_switcher_close_all_tabs)
|
@OnClick(R.id.tab_switcher_close_all_tabs)
|
||||||
void closeAllTabs() {
|
void closeAllTabs() {
|
||||||
|
rotate(closeAllTabsButton);
|
||||||
webViewList.clear();
|
webViewList.clear();
|
||||||
tabsAdapter.notifyDataSetChanged();
|
tabsAdapter.notifyDataSetChanged();
|
||||||
openDefaultTab();
|
openHomeScreen();
|
||||||
updateTabSwitcherIcon();
|
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)
|
@OnClick(R.id.bottom_toolbar_bookmark)
|
||||||
public void toggleBookmark() {
|
public void toggleBookmark() {
|
||||||
//Check maybe need refresh
|
//Check maybe need refresh
|
||||||
|
@ -3,7 +3,11 @@ package org.kiwix.kiwixmobile.utils;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.animation.Animation;
|
import android.view.animation.Animation;
|
||||||
|
import android.view.animation.RotateAnimation;
|
||||||
import android.view.animation.Transformation;
|
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 class AnimationUtils {
|
||||||
public static void expand(final View view) {
|
public static void expand(final View view) {
|
||||||
@ -61,4 +65,29 @@ public class AnimationUtils {
|
|||||||
(int) (initialHeight / view.getContext().getResources().getDisplayMetrics().density));
|
(int) (initialHeight / view.getContext().getResources().getDisplayMetrics().density));
|
||||||
view.startAnimation(animation);
|
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));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:height="24dp"
|
android:height="24dp"
|
||||||
|
android:tint="#FFFFFF"
|
||||||
android:viewportHeight="24.0"
|
android:viewportHeight="24.0"
|
||||||
android:viewportWidth="24.0"
|
android:viewportWidth="24.0"
|
||||||
android:width="24dp">
|
android:width="24dp">
|
||||||
<path
|
<path
|
||||||
android:fillColor="#FFFFFF"
|
android:fillColor="#000000"
|
||||||
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
|
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
|
||||||
</vector>
|
</vector>
|
||||||
|
10
app/src/main/res/drawable/ic_close_white_24dp.xml
Normal file
10
app/src/main/res/drawable/ic_close_white_24dp.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:height="24dp"
|
||||||
|
android:tint="#000000"
|
||||||
|
android:viewportHeight="24.0"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:width="24dp">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FFFFFFFF"
|
||||||
|
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
|
||||||
|
</vector>
|
10
app/src/main/res/drawable/ic_done_white_24dp.xml
Normal file
10
app/src/main/res/drawable/ic_done_white_24dp.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:height="24dp"
|
||||||
|
android:tint="@color/greenTick"
|
||||||
|
android:viewportHeight="24.0"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:width="24dp">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"/>
|
||||||
|
</vector>
|
@ -21,10 +21,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="24dp"
|
android:layout_marginBottom="24dp"
|
||||||
android:contentDescription="@string/close_all_tabs"
|
android:contentDescription="@string/close_all_tabs"
|
||||||
app:backgroundTint="@android:color/black"
|
app:backgroundTint="@android:color/white"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:srcCompat="@drawable/ic_clear_white_24dp"
|
app:srcCompat="@drawable/ic_close_white_24dp"
|
||||||
/>
|
/>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
<color name="blueTransparent">#962e7ac4</color>
|
<color name="blueTransparent">#962e7ac4</color>
|
||||||
<color name="actionModeBackground">#4285F4</color>
|
<color name="actionModeBackground">#4285F4</color>
|
||||||
<color name="titleBar">#000000</color>
|
<color name="titleBar">#000000</color>
|
||||||
|
<color name="greenTick">#4CAF50</color>
|
||||||
|
|
||||||
<!-- Dark Text Color for Light Background -->
|
<!-- Dark Text Color for Light Background -->
|
||||||
<color name="textDarkPrimary">#000000</color> <!-- 0% opacity-->
|
<color name="textDarkPrimary">#000000</color> <!-- 0% opacity-->
|
||||||
<color name="textDarkSecondary">#DE000000</color> <!--DE for 87% opacity-->
|
<color name="textDarkSecondary">#DE000000</color> <!--DE for 87% opacity-->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user