private void setupSwipe(ItemTrackedBeaconBinding beaconBinding) { final SwipeDismissBehavior<CardView> swipe = new SwipeDismissBehavior(); swipe.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_ANY); swipe.setListener(new SwipeDismissBehavior.OnDismissListener() { @Override public void onDismiss(View view) { Log.d(Constants.TAG, "Swipe +"); } @Override public void onDragStateChanged(int state) { } }); }
@Override protected void subscribeActual(Observer<? super View> observer) { if (!checkMainThread(observer)) { return; } if (!(view.getLayoutParams() instanceof LayoutParams)) { throw new IllegalArgumentException("The view is not in a Coordinator Layout."); } LayoutParams params = (LayoutParams) view.getLayoutParams(); final SwipeDismissBehavior behavior = (SwipeDismissBehavior) params.getBehavior(); if (behavior == null) { throw new IllegalStateException("There's no behavior set on this view."); } Listener listener = new Listener(behavior, observer); observer.onSubscribe(listener); behavior.setListener(listener); }
@Test public void dismisses() { ((CoordinatorLayout.LayoutParams) view.getLayoutParams()).setBehavior( new SwipeDismissBehavior()); RecordingObserver<View> o = new RecordingObserver<>(); RxSwipeDismissBehavior.dismisses(view) .subscribeOn(AndroidSchedulers.mainThread()) .subscribe(o); o.assertNoMoreEvents(); // No initial value. onView(withId(1)).perform(swipeRight()); assertEquals(view, o.takeNext()); o.dispose(); onView(withId(1)).perform(swipeRight()); o.assertNoMoreEvents(); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_swipe_behavior); final SwipeDismissBehavior swipe = new SwipeDismissBehavior(); swipe.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_ANY); swipe.setListener(new SwipeDismissBehavior.OnDismissListener() { @Override public void onDismiss(View view) { Toast.makeText(SwipeBehaviorExampleActivity.this, "Card swiped !!", Toast.LENGTH_SHORT).show(); } @Override public void onDragStateChanged(int state) {} }); CardView cardView = (CardView) findViewById(R.id.swype_card); LayoutParams coordinatorParams = (LayoutParams) cardView.getLayoutParams(); coordinatorParams.setBehavior(swipe); }
private void initBehavior() { swipeDismissBehavior = new SwipeDismissBehavior(); swipeDismissBehavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_ANY); swipeDismissBehavior.setListener(onDismissListener); CoordinatorLayout.LayoutParams coordinatorParams = (CoordinatorLayout.LayoutParams) findViewById(R.id.textview).getLayoutParams(); coordinatorParams.setBehavior(swipeDismissBehavior); swipeDismissBehavior.setDragDismissDistance(0.5F); swipeDismissBehavior.setStartAlphaSwipeDistance(0F); swipeDismissBehavior.setEndAlphaSwipeDistance(0.5F); swipeDismissBehavior.setSensitivity(0); swipeDismissBehavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_START_TO_END); }
public CardViewHolder(final View itemView) { super(itemView); userName = (TextView) itemView.findViewById(R.id.user_name); userIcon = (ImageView) itemView.findViewById(R.id.user_icon); image = (ImageView) itemView.findViewById(R.id.image); card = (CardView) itemView.findViewById(R.id.card); card.setOnClickListener(this); // ドラッグして消えるBehaviorを取り付ける。 // スワイプする要素は、親ビューがCoordinatorLayoutである必要がある。 SwipeDismissBehavior behavior = new SwipeDismissBehavior(); behavior.setStartAlphaSwipeDistance(0.1f); behavior.setEndAlphaSwipeDistance(0.6f); behavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_START_TO_END); behavior.setListener(new SwipeDismissBehavior.OnDismissListener() { @Override public void onDismiss(View view) { if (listener != null) { listener.onCardDismiss(CardViewHolder.this); } } @Override public void onDragStateChanged(int state) { if (listener != null) { listener.onDragStateChanged(CardViewHolder.this, state); } } }); final ViewGroup.LayoutParams cardViewLayoutParams = card.getLayoutParams(); ((CoordinatorLayout.LayoutParams) cardViewLayoutParams).setBehavior(behavior); }
/** * @return if the view is being being dragged or settled by {@link SwipeDismissBehavior}. */ private boolean isBeingDragged() { final ViewGroup.LayoutParams lp = mView.getLayoutParams(); if (lp instanceof CoordinatorLayout.LayoutParams) { final CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) lp; final CoordinatorLayout.Behavior behavior = layoutParams.getBehavior(); if (behavior instanceof SwipeDismissBehavior) { return ((SwipeDismissBehavior) behavior).getDragState() != SwipeDismissBehavior.STATE_IDLE; } } return false; }
/** * @return if the view is being being dragged or settled by {@link SwipeDismissBehavior}. */ private boolean isBeingDragged() { final ViewGroup.LayoutParams lp = mView.getLayoutParams(); if (lp instanceof CoordinatorLayout.LayoutParams) { final CoordinatorLayout.LayoutParams cllp = (CoordinatorLayout.LayoutParams) lp; final CoordinatorLayout.Behavior behavior = cllp.getBehavior(); if (behavior instanceof SwipeDismissBehavior) { return ((SwipeDismissBehavior) behavior).getDragState() != SwipeDismissBehavior.STATE_IDLE; } } return false; }
@SuppressWarnings("rawtypes") private boolean isBeingDragged() { final ViewGroup.LayoutParams lp = mView.getLayoutParams(); if (lp instanceof CoordinatorLayout.LayoutParams) { final CoordinatorLayout.LayoutParams cllp = (CoordinatorLayout.LayoutParams) lp; final CoordinatorLayout.Behavior behavior = cllp.getBehavior(); if (behavior instanceof SwipeDismissBehavior) { return ((SwipeDismissBehavior) behavior).getDragState() != SwipeDismissBehavior.STATE_IDLE; } } return false; }
@Override public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) { if(dependency instanceof TopCardView) { CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) dependency.getLayoutParams(); params.setBehavior(swipeDismissBehavior); swipeDismissBehavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_START_TO_END); swipeDismissBehavior.setStartAlphaSwipeDistance(0.1f); swipeDismissBehavior.setEndAlphaSwipeDistance(0.9f); swipeDismissBehavior.setDragDismissDistance(0.8f); return true; } return false; }
Listener(SwipeDismissBehavior swipeDismissBehavior, Observer<? super View> observer) { this.swipeDismissBehavior = swipeDismissBehavior; this.observer = observer; }