package cn.bingoogolapple.media.ui.widget;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import cn.bingoogolapple.media.R;
public class Divider extends RecyclerView.ItemDecoration {
private Drawable mDividerDrawable;
public Divider(Context context) {
mDividerDrawable = context.getResources().getDrawable(R.mipmap.list_divider);
}
// 如果等于分割线的宽度或高度的话可以不用重写该方法
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (parent.getChildPosition(view) == parent.getChildCount() - 1) {
outRect.set(0, 0, 0, 0);
} else {
outRect.set(0, 0, 0, mDividerDrawable.getIntrinsicHeight());
}
}
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
drawVertical(c, parent);
}
public void drawVertical(Canvas c, RecyclerView parent) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
View child;
RecyclerView.LayoutParams layoutParams;
int top;
int bottom;
int childCount = parent.getChildCount();
for (int i = 0; i < childCount - 1; i++) {
child = parent.getChildAt(i);
layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams();
top = child.getBottom() + layoutParams.bottomMargin;
bottom = top + mDividerDrawable.getIntrinsicHeight();
mDividerDrawable.setBounds(left, top, right, bottom);
mDividerDrawable.draw(c);
}
}
}