package org.aisen.wen.ui.itemview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import org.aisen.wen.support.utils.Utils; /** * Created by wangdan on 16/1/10. */ public class DefDividerItemView extends RecyclerView.ItemDecoration { /** * 水平方向 */ public static final int HORIZONTAL = LinearLayoutManager.HORIZONTAL; /** * 垂直方向 */ public static final int VERTICAL = LinearLayoutManager.VERTICAL; // 画笔 private Paint paint; // 布局方向 private int orientation; // 分割线颜色 private int color; // 分割线尺寸 private float size; public DefDividerItemView(Context context, int color) { this(context, color, VERTICAL); } public DefDividerItemView(Context context, int color, int orientation) { this.orientation = orientation; this.size = Utils.dip2px(context, 1); paint = new Paint(); setColor(color); } @Override public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDrawOver(c, parent, state); if (orientation == VERTICAL) { drawHorizontal(c, parent); } else { drawVertical(c, parent); } } /** * 设置分割线颜色 * * @param color 颜色 */ public void setColor(int color) { this.color = color; paint.setColor(color); } /** * 设置分割线尺寸 * * @param size 尺寸 */ public void setSize(float size) { this.size = size; } // 绘制垂直分割线 protected void drawVertical(Canvas c, RecyclerView parent) { final int top = parent.getPaddingTop(); final int bottom = parent.getHeight() - parent.getPaddingBottom(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); final float left = child.getRight() + params.rightMargin; final float right = left + size; c.drawRect(left, top, right, bottom, paint); } } // 绘制水平分割线 protected void drawHorizontal(Canvas c, RecyclerView parent) { final int left = parent.getPaddingLeft(); final int right = parent.getWidth() - parent.getPaddingRight(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); final int top = child.getBottom() + params.bottomMargin; final float bottom = top + size; c.drawRect(left, top, right, bottom, paint); } } }