react-native-navigation的迁移库

Fab.java 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.reactnativenavigation.views;
  2. import android.content.Context;
  3. import android.graphics.PorterDuff;
  4. import android.graphics.PorterDuffColorFilter;
  5. import android.graphics.drawable.Drawable;
  6. import com.github.clans.fab.FloatingActionButton;
  7. import com.reactnativenavigation.anim.FabAnimator;
  8. import com.reactnativenavigation.anim.FabCollapseBehaviour;
  9. import com.reactnativenavigation.interfaces.ScrollEventListener;
  10. import com.reactnativenavigation.parse.params.Colour;
  11. import com.reactnativenavigation.utils.ImageLoader;
  12. import com.reactnativenavigation.utils.ImageLoadingListenerAdapter;
  13. import java.util.Collections;
  14. import java.util.List;
  15. import androidx.annotation.NonNull;
  16. public class Fab extends FloatingActionButton implements FabAnimator {
  17. private String id = "";
  18. private FabCollapseBehaviour collapseBehaviour;
  19. public Fab(Context context, String id) {
  20. super(context);
  21. collapseBehaviour = new FabCollapseBehaviour(this);
  22. this.id = id;
  23. }
  24. public void applyIcon(String icon, Colour color) {
  25. new ImageLoader().loadIcons(getContext(), Collections.singletonList(icon), new ImageLoadingListenerAdapter() {
  26. @Override
  27. public void onComplete(@NonNull List<? extends Drawable> drawables) {
  28. if (color.hasValue()) drawables.get(0).setColorFilter(new PorterDuffColorFilter(color.get(), PorterDuff.Mode.SRC_IN));
  29. setImageDrawable(drawables.get(0));
  30. }
  31. @Override
  32. public void onError(Throwable error) {
  33. error.printStackTrace();
  34. }
  35. });
  36. }
  37. @Override
  38. public boolean equals(Object o) {
  39. if (this == o) return true;
  40. if (o == null || getClass() != o.getClass()) return false;
  41. Fab fab = (Fab) o;
  42. return id.equals(fab.id);
  43. }
  44. @Override
  45. public int hashCode() {
  46. return id.hashCode();
  47. }
  48. @Override
  49. public void show() {
  50. show(true);
  51. }
  52. @Override
  53. public void hide() {
  54. hide(true);
  55. }
  56. public void enableCollapse(@NonNull ScrollEventListener scrollEventListener) {
  57. collapseBehaviour.enableCollapse(scrollEventListener);
  58. }
  59. public void disableCollapse() {
  60. collapseBehaviour.disableCollapse();
  61. }
  62. public String getFabId() {
  63. return id;
  64. }
  65. }