@Override public void onDrawOver(Canvas c, androidx.recyclerview.widget.RecyclerView parent, androidx.recyclerview.widget.RecyclerView.State state) { if (drawable == null) { super.onDrawOver(c, parent, state); return;
@Override public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDrawOver(c, parent, state); View topChild = parent.getChildAt(0); if (Utility.isNull(topChild)) { return; } int topChildPosition = parent.getChildAdapterPosition(topChild); if (topChildPosition == RecyclerView.NO_POSITION) { return; } View currentHeader = getHeaderViewForItem(topChildPosition, parent); currentHeader.setPadding((int) (currentHeader.getPaddingLeft() - Utility.convertPixelsToDp(5, context)), currentHeader.getPaddingTop(), currentHeader.getPaddingRight(), currentHeader.getPaddingBottom()); fixLayoutSize(parent, currentHeader); int contactPoint = currentHeader.getBottom(); View childInContact = getChildInContact(parent, contactPoint); if (Utility.isNull(childInContact)) { Log.e("childInContact", "childInContact is null"); return; } if (mListener.isHeader(parent.getChildAdapterPosition(childInContact))) { moveHeader(c, currentHeader, childInContact); return; } drawHeader(c, currentHeader); }
@Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDraw(c, parent, state); if (mState != STATE_NONE && mState != STATE_STOPPING) { boolean dragging = mState == STATE_DRAGGING; if (dragging) { // Update location. updateLocation(); // Offset dragged item. setTranslation(mLocation.left - mViewHolder.itemView.getLeft(), mLocation.top - mViewHolder.itemView.getTop()); // Swap with adjacent views if necessary. handleSwap(); } // Handle scrolling when on the edges. handleScroll(!dragging); } }
@Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); if (mDivider == null || parent.getChildLayoutPosition(view) < 1) { return; } outRect.top = size; }
@Override public void onDrawOver(Canvas c, RecyclerView parent, State state) { super.onDrawOver(c, parent, state); drawDecoration(c, parent, mDropTargetForegroundDrawable); }
@Override public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); outRect.set(mItemOffset, mItemOffset, mItemOffset, mItemOffset); } }
@Override public void onDraw(Canvas c, RecyclerView parent, State state) { super.onDraw(c, parent, state); drawDecoration(c, parent, mDropTargetBackgroundDrawable); }
@Override public void onDrawOver(Canvas canvas, RecyclerView parent, RecyclerView.State state) { super.onDrawOver(canvas, parent, state); final int childCount = parent.getChildCount(); if (childCount <= 0 || mAdapter.getItemCount() <= 0) { return; } for (int i = 0; i < childCount; i++) { View itemView = parent.getChildAt(i); int position = parent.getChildAdapterPosition(itemView); if (position == RecyclerView.NO_POSITION) { continue; } boolean hasStickyHeader = mHeaderPositionCalculator.hasStickyHeader(itemView, mOrientationProvider.getOrientation(parent), position); if (hasStickyHeader || mHeaderPositionCalculator.hasNewHeader(position, mOrientationProvider.isReverseLayout(parent))) { View header = mHeaderProvider.getHeader(parent, position); //re-use existing Rect, if any. Rect headerOffset = mHeaderRects.get(position); if (headerOffset == null) { headerOffset = new Rect(); mHeaderRects.put(position, headerOffset); } mHeaderPositionCalculator.initHeaderBounds(headerOffset, parent, header, itemView, hasStickyHeader); mRenderer.drawHeader(parent, canvas, header, headerOffset); } } }
@Override public void getItemOffsets(Rect outRect, View view, androidx.recyclerview.widget.RecyclerView parent, androidx.recyclerview.widget.RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); if (drawable == null) return; int position = parent.getChildAdapterPosition(view); if (position == -1) return; if (drawAfterRules != null && drawAfterRules.draw(position)) { if (getOrientation(parent) == LinearLayoutManager.VERTICAL) { outRect.bottom = height; } else { outRect.right = height; } } if (drawBeforeRules != null && drawBeforeRules.draw(position) || drawAfterRules == null && drawBeforeRules == null && position > 0) { if (getOrientation(parent) == LinearLayoutManager.VERTICAL) { outRect.top = height; } else { outRect.left = height; } } }
@Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); int itemPosition = parent.getChildAdapterPosition(view); if (itemPosition == RecyclerView.NO_POSITION) { return; } if (mHeaderPositionCalculator.hasNewHeader(itemPosition, mOrientationProvider.isReverseLayout(parent))) { View header = getHeaderView(parent, itemPosition); setItemOffsetsForHeader(outRect, header, mOrientationProvider.getOrientation(parent)); } }