Move the wallet floating button away when scroll gets to the bottom #1155

Merged
kekkyojin merged 1 commit from floating-balance-oculting into master 2021-03-04 19:11:19 +01:00
2 changed files with 39 additions and 0 deletions

View file

@ -1,5 +1,6 @@
package io.lbry.browser; package io.lbry.browser;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
@ -824,6 +825,20 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
walletBalanceListeners.remove(listener); walletBalanceListeners.remove(listener);
} }
public void restoreWalletContainerPosition() {
View floatingBalance = findViewById(R.id.floating_balance_main_container);
ObjectAnimator animation = ObjectAnimator.ofFloat(floatingBalance, "translationY", 0f);
animation.setDuration(250).start();
}
public void translateFloatingWallet(float initialY) {
if (findViewById(R.id.floating_balance_main_container).getY() == initialY) {
ObjectAnimator animation = ObjectAnimator.ofFloat(findViewById(R.id.floating_balance_main_container), "translationY", 2 * findViewById(R.id.floating_balance_main_container).getHeight());
animation.setDuration(300).start();
}
}
public void removeNavFragment(Class fragmentClass, int navItemId) { public void removeNavFragment(Class fragmentClass, int navItemId) {
String key = buildNavFragmentKey(fragmentClass, navItemId, null); String key = buildNavFragmentKey(fragmentClass, navItemId, null);
if (openNavFragments.containsKey(key)) { if (openNavFragments.containsKey(key)) {

View file

@ -247,6 +247,8 @@ public class FileViewFragment extends BaseFragment implements
// if this is set, scroll to the specific comment on load // if this is set, scroll to the specific comment on load
private String commentHash; private String commentHash;
private float floatingWalletPositionY;
public View onCreateView(@NonNull LayoutInflater inflater, public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) { ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_file_view, container, false); View root = inflater.inflate(R.layout.fragment_file_view, container, false);
@ -802,6 +804,7 @@ public class FileViewFragment extends BaseFragment implements
activity.removeSdkStatusListener(this); activity.removeSdkStatusListener(this);
activity.removeStoragePermissionListener(this); activity.removeStoragePermissionListener(this);
activity.removeWalletBalanceListener(this); activity.removeWalletBalanceListener(this);
activity.restoreWalletContainerPosition();
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
} }
@ -1282,6 +1285,27 @@ public class FileViewFragment extends BaseFragment implements
buttonUnfollow.setOnClickListener(followUnfollowListener); buttonUnfollow.setOnClickListener(followUnfollowListener);
buttonBell.setOnClickListener(bellIconListener); buttonBell.setOnClickListener(bellIconListener);
NestedScrollView scrollView = root.findViewById(R.id.file_view_scroll_view);
// Store floating wallet balance vertical position when fragment was created
// This is used for animate it when user scrolls to the bottom of the screen
View floatingBalance = getActivity().findViewById(R.id.floating_balance_main_container);
floatingWalletPositionY = floatingBalance.getY();
scrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
Context ctx = getContext();
if (scrollY < oldScrollY && ctx instanceof MainActivity) {
// User has scrolled upwards
((MainActivity) ctx).restoreWalletContainerPosition();
} else if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight()) && ctx instanceof MainActivity) {
// User is at the bottom of the screen
((MainActivity) ctx).translateFloatingWallet(floatingWalletPositionY);
}
}
});
commentChannelSpinnerAdapter = new InlineChannelSpinnerAdapter(getContext(), R.layout.spinner_item_channel, new ArrayList<>()); commentChannelSpinnerAdapter = new InlineChannelSpinnerAdapter(getContext(), R.layout.spinner_item_channel, new ArrayList<>());
commentChannelSpinnerAdapter.addPlaceholder(false); commentChannelSpinnerAdapter.addPlaceholder(false);