Skip to content

Instantly share code, notes, and snippets.

@gabornovakp
Created December 29, 2016 15:41
Show Gist options
  • Save gabornovakp/c006854ee4fca5e86636e90a4d8373c9 to your computer and use it in GitHub Desktop.
Save gabornovakp/c006854ee4fca5e86636e90a4d8373c9 to your computer and use it in GitHub Desktop.
ViewHolder for swipe gesture
static class ViewHolder extends RecyclerView.ViewHolder {
private Interpolator interpolator = new DecelerateInterpolator(2f);
private TextView nameTextView;
private View leftImage;
private View rightImage;
private View view;
public ViewHolder(View view) {
super(view);
this.view = view;
nameTextView = (TextView) view.findViewById(R.id.share_link_name_text);
leftImage = view.findViewById(R.id.left_image);
rightImage = view.findViewById(R.id.right_image);
}
public void setName(String name) {
nameTextView.setText(name);
}
public View getView() {
return view;
}
void handleSwipeGesture(float dX) {
float height = nameTextView.getHeight();
float maxAbsXDiff = nameTextView.getWidth() / 2f;
float factor = interpolator.getInterpolation(Math.min(Math.abs(dX), maxAbsXDiff) / maxAbsXDiff);
float diffX = factor * height;
if (dX < 0) {
diffX *= -1;
}
nameTextView.setTranslationX(diffX);
if (dX < 0) {
rightImage.setAlpha(factor);
rightImage.setTranslationX((height - Math.abs(diffX)) / 2f);
} else {
leftImage.setAlpha(factor);
leftImage.setTranslationX(Math.abs(height - diffX) / -2f);
}
}
public void reset() {
nameTextView.setTranslationX(0);
rightImage.setAlpha(1f);
rightImage.setTranslationX(0);
leftImage.setAlpha(1f);
leftImage.setTranslationX(0);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment