Add vertical translation to the bottom actionbar animation.

fork-5.53.8
Greyson Parrelli 2021-10-22 16:24:43 -04:00
rodzic 947f59e81b
commit 7d49c77d1a
5 zmienionych plików z 25 dodań i 5 usunięć

Wyświetl plik

@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.components.menu package org.thoughtcrime.securesms.components.menu
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
/** /**
* Represents an action to be rendered via [SignalContextMenu] or [SignalBottomActionBar] * Represents an action to be rendered via [SignalContextMenu] or [SignalBottomActionBar]

Wyświetl plik

@ -6,9 +6,12 @@ import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
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.AnimationUtils
import android.widget.ImageView import android.widget.ImageView
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.ViewUtil
@ -22,6 +25,20 @@ class SignalBottomActionBar(context: Context, attributeSet: AttributeSet) : Line
val items: MutableList<ActionItem> = mutableListOf() val items: MutableList<ActionItem> = mutableListOf()
val enterAnimation: Animation by lazy {
AnimationUtils.loadAnimation(context, R.anim.slide_fade_from_bottom).apply {
duration = 250
interpolator = FastOutSlowInInterpolator()
}
}
val exitAnimation: Animation by lazy {
AnimationUtils.loadAnimation(context, R.anim.slide_fade_to_bottom).apply {
duration = 250
interpolator = FastOutSlowInInterpolator()
}
}
init { init {
orientation = HORIZONTAL orientation = HORIZONTAL
setBackgroundResource(R.drawable.signal_bottom_action_bar_background) setBackgroundResource(R.drawable.signal_bottom_action_bar_background)

Wyświetl plik

@ -963,7 +963,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
private void startActionMode() { private void startActionMode() {
actionMode = ((AppCompatActivity) getActivity()).startSupportActionMode(ConversationListFragment.this); actionMode = ((AppCompatActivity) getActivity()).startSupportActionMode(ConversationListFragment.this);
ViewUtil.fadeIn(bottomActionBar, 250); ViewUtil.animateIn(bottomActionBar, bottomActionBar.getEnterAnimation());
ViewUtil.fadeOut(fab, 250); ViewUtil.fadeOut(fab, 250);
ViewUtil.fadeOut(cameraFab, 250); ViewUtil.fadeOut(cameraFab, 250);
if (megaphoneContainer.resolved()) { if (megaphoneContainer.resolved()) {
@ -980,7 +980,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
private void endActionMode() { private void endActionMode() {
actionMode.finish(); actionMode.finish();
actionMode = null; actionMode = null;
ViewUtil.fadeOut(bottomActionBar, 250); ViewUtil.animateOut(bottomActionBar, bottomActionBar.getExitAnimation());
ViewUtil.fadeIn(fab, 250); ViewUtil.fadeIn(fab, 250);
ViewUtil.fadeIn(cameraFab, 250); ViewUtil.fadeIn(cameraFab, 250);
if (megaphoneContainer.resolved()) { if (megaphoneContainer.resolved()) {

Wyświetl plik

@ -303,14 +303,14 @@ public final class MediaOverviewPageFragment extends Fragment
FragmentActivity activity = requireActivity(); FragmentActivity activity = requireActivity();
actionMode = ((AppCompatActivity) activity).startSupportActionMode(actionModeCallback); actionMode = ((AppCompatActivity) activity).startSupportActionMode(actionModeCallback);
((MediaOverviewActivity) activity).onEnterMultiSelect(); ((MediaOverviewActivity) activity).onEnterMultiSelect();
ViewUtil.fadeIn(bottomActionBar, 250); ViewUtil.animateIn(bottomActionBar, bottomActionBar.getEnterAnimation());
updateMultiSelect(); updateMultiSelect();
} }
private void exitMultiSelect() { private void exitMultiSelect() {
actionMode.finish(); actionMode.finish();
actionMode = null; actionMode = null;
ViewUtil.fadeOut(bottomActionBar, 250); ViewUtil.animateOut(bottomActionBar, bottomActionBar.getExitAnimation());
} }
private void updateMultiSelect() { private void updateMultiSelect() {

Wyświetl plik

@ -119,6 +119,10 @@ public final class ViewUtil {
return animateOut(view, getAlphaAnimation(1f, 0f, duration), visibility); return animateOut(view, getAlphaAnimation(1f, 0f, duration), visibility);
} }
public static ListenableFuture<Boolean> animateOut(final @NonNull View view, final @NonNull Animation animation) {
return animateOut(view, animation, View.GONE);
}
public static ListenableFuture<Boolean> animateOut(final @NonNull View view, final @NonNull Animation animation, final int visibility) { public static ListenableFuture<Boolean> animateOut(final @NonNull View view, final @NonNull Animation animation, final int visibility) {
final SettableFuture future = new SettableFuture(); final SettableFuture future = new SettableFuture();
if (view.getVisibility() == visibility) { if (view.getVisibility() == visibility) {