У меня есть перелистываемое изображение переработчика с изображением под ним. Я использую onChildDraw для визуализации этих изображений. Но по какой-то причине изображения вообще не показываются.
public class SimpleItemCallBack extends ItemTouchHelper.SimpleCallback {
@BindColor(R.color.colorBehindCard)
int colorBehindCards;
private Context context;
private SwipeListener mSwipeListener;
public SimpleItemCallBack(Context context, SwipeListener swipeListener) {
super(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
this.context = context;
this.mSwipeListener = swipeListener;
}
private Paint p = new Paint();
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
if (direction == ItemTouchHelper.LEFT) {
mSwipeListener.openDetailSelectedTherapy();
//todo do something
} else {
mSwipeListener.openOrderSummary();
}
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
p.setStyle(Paint.Style.FILL_AND_STROKE);
Bitmap icon;
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
View itemView = viewHolder.itemView;
float height = (float) itemView.getBottom() - (float) itemView.getTop();
float width = height / 3;
//if it was a right swipe
if (dX > 0) {
p.setColor(colorBehindCards);
RectF background = new RectF((float) itemView.getLeft(), (float) itemView.getTop(), dX, (float) itemView.getBottom());
c.clipRect(background);
c.drawRect(background, p);
icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.img_quick_booking_);
RectF icon_dest = new RectF((float) itemView.getLeft() + 50, (float) itemView.getTop() + width, (float) itemView.getLeft() + width + 50, (float) itemView.getBottom() - width);
c.drawBitmap(icon, null, icon_dest, p);
} else {
p.setColor(colorBehindCards);
RectF background = new RectF((float) itemView.getRight() + dX, (float) itemView.getTop(), (float) itemView.getRight(), (float) itemView.getBottom());
c.clipRect(background);
c.drawRect(background, p);
icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.img_quick_category);
RectF icon_dest = new RectF((float) itemView.getRight() - width - 50, (float) itemView.getTop() + width, (float) itemView.getRight() - 50, (float) itemView.getBottom() - width);
c.drawBitmap(icon, null, icon_dest, p);
}
}
c.restore();
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
}
Я инициализировал recclerview и настроил экземпляр itemTouchHelper следующим образом ... в моем классе активности ..
SimpleItemCallBack simpleItemCallBack = new SimpleItemCallBack(getContext(), this);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemCallBack);
itemTouchHelper.attachToRecyclerView(therpayRecyclerView);
У меня нет сбоев. Отображается окно реселлера, но под ним нет изображения, как вы можете видеть у меня в функции SimpleItemCallBack onDraw.