Android自定义上下左右间隔线
更新时间:2018年06月13日 10:50:32 作者:u014469691
这篇文章主要为大家详细介绍了Android自定义上下左右间隔线,自定义SpaceItemDecoration分割线,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Android自定义SpaceItemDecoration分割线的具体代码,供大家参考,具体内容如下
此线是在RecyclerView中的GridlayoutManager中使用的 效果图如下:
/** * author: Y_Qing * date: 2018/5/7 */ public class SpaceItemDecoration extends RecyclerView.ItemDecoration { private int space; Paint mPaint; public SpaceItemDecoration(int space) { this.space = space; mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(0xffededed); mPaint.setStyle(Paint.Style.FILL); } private static final int HORIZONTAL = 355; @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int itemViewType = parent.getLayoutManager().getItemViewType(view); if (itemViewType == HORIZONTAL) { //根据ViewType类型来判断是否展示线 outRect.bottom = space; if (parent.getChildLayoutPosition(view) % 2 == 0) { outRect.right = space / 2; outRect.left = space; } else { outRect.right = space; outRect.left = space / 2; } } } @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { c.save(); if (parent.getLayoutManager() instanceof GridLayoutManager) { if ((((GridLayoutManager) parent.getLayoutManager())).getSpanCount() == 2) { draw(c, parent); } } c.restore(); } //绘制横向 item 分割线 private void draw(Canvas canvas, RecyclerView parent) { int childSize = parent.getChildCount(); for (int i = 0; i < childSize; i++) { View child = parent.getChildAt(i); RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams(); int left = child.getLeft(); int right = child.getRight(); int top = child.getBottom() + layoutParams.bottomMargin; int bottom = top + space; if (mPaint != null) { canvas.drawRect(left, top, right, bottom, mPaint);//绘制图片下放的水平线 } if (parent.getChildLayoutPosition(child) % 2 == 0) { canvas.drawRect(0, child.getTop(), left, child.getBottom() + space, mPaint);//绘制左边图片的左间线 } top = child.getTop(); bottom = child.getBottom() + space; left = child.getRight() + layoutParams.rightMargin; right = left + space; if (mPaint != null) { canvas.drawRect(left, top, right, bottom, mPaint);//绘制图片的右间线 } } } }
使用方法下:
private void initSpaceLine() { if (decor == null) { decor = new SpaceItemDecoration(ViewUtil.dp2px(5)); recycleListView.addItemDecoration(decor); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章
Mono for Android 实现高效的导航(Effective Navigation)
Android 4.0 系统定义了一系列的高效导航方式 (Effective Navigation), 主要包括标签、下拉列表、以及向上和返回等, 本文介绍如何用 Mono for Android 实现这些的导航方式2012-12-12通过FancyView提供 Android 酷炫的开屏动画实例代码
这篇文章主要介绍了通过FancyView提供 Android 酷炫的开屏动画的实现代码,需要的朋友可以参考下2017-12-12Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法
这篇文章主要介绍了Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法的相关资料,需要的朋友可以参考下2017-04-04Android简单的利用MediaRecorder进行录音的实例代码
MediaRecorder可以进行简单的录音,由于操作简单所以可以用来进行基本的录音。下面提供一个简单的例子,记得在Mainfest文件中添加权限2013-08-08
最新评论