RecyclerView虚线分割线
2016-02-25 00:38
423 查看
以前使用listview的时候,使用了资源文件作为divider,绘制虚线也是用自定义的drawable绘制虚线,当然会遇到一些坑,虚线不会那么容易加载出来,android 4.0以后的系统都默认开启了硬件加速,虚线就绘制不出来了,所以解决方案很简单,关闭act的硬件加速或者listview 的硬件加速即可,所以,listview上用资源文件去绘制虚线还是很好用的。
但是,recyclerview的话我也试着用资源文件去绘制虚线,看我这篇《Recyclerview使用资源文件作为分割线divider》,在Recyclerview中,就算我关闭了硬件加速,也是直线,蛋疼。。。
所以,还是老老实实,用canvas自己绘制虚线吧!
上
但是,recyclerview的话我也试着用资源文件去绘制虚线,看我这篇《Recyclerview使用资源文件作为分割线divider》,在Recyclerview中,就算我关闭了硬件加速,也是直线,蛋疼。。。
所以,还是老老实实,用canvas自己绘制虚线吧!
看代码,我是这么使用的:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initData(); //最关键的三行代码 mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setAdapter(mAdapter = new HomeAdapter()); //设置分割线 mRecyclerView.addItemDecoration(new DashlineItemDivider()); }
上
DashlineItemDivider代码:
public class DashlineItemDivider extends RecyclerView.ItemDecoration { public void onDrawOver(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; //绘制虚线 Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.RED); Path path = new Path(); path.moveTo(left, top); path.lineTo(right,top); PathEffect effects = new DashPathEffect(new float[]{15,15,15,15},5);//此处单位是像素不是dp 注意 请自行转化为dp paint.setPathEffect(effects); c.drawPath(path, paint); } } }
效果如图:
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories