博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android应用开发—RecyclerView绘制蒙层
阅读量:5947 次
发布时间:2019-06-19

本文共 2283 字,大约阅读时间需要 7 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/voidreturn/article/details/77718470

背景:如何在跨越两个或两个以上的item绘制一个view,该view需要跟随recyclerView的滑动而整体移动。

@Override    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {        super.onDrawOver(c, parent, state);        final View child = parent.getChildAt(1);        if (child != null) {            final int left = child.getLeft();            final int right = child.getRight();            final int top = child.getTop();            final int bottom = child.getBottom();            int rightV = (right - left) / 6;            int leftV = (right - rightV) - VAUtils.dip2px(mContext, 225);            int topV = bottom - VAUtils.dip2px(mContext, 16);            int bottomV = topV + VAUtils.dip2px(mContext, 82);            ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(mImageView.getLayoutParams());            margin.setMargins(leftV, topV, rightV, bottomV);            RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin);            mImageView.setLayoutParams(layoutParams);            if (!imageClicked) {                mImageView.setVisibility(View.VISIBLE);            }            //画笔            final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);            //圆心 x 坐标            final float x = parent.getWidth() / 2 + left;            圆心 y 坐标            final float y = 100 + top;            //半径            final float radius = 100;            //渐变着色器 坐标随意设置的            final LinearGradient shader = new LinearGradient(x-50, 0, x+100, 200, Color.RED, Color.YELLOW, Shader.TileMode.REPEAT);            paint.setShader(shader);            //绘制圆            c.drawCircle(x, y, radius, paint);        }    }
@Overridepublic void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {    super.onDrawOver(c, parent, state);    //画笔    final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);    //圆心 x 坐标    final float x = parent.getWidth() / 2;    圆心 y 坐标    final float y = 100;    //半径    final float radius = 100;    //渐变着色器 坐标随意设置的    final LinearGradient shader = new LinearGradient(x-50, 0, x+100, 200, Color.RED, Color.YELLOW, Shader.TileMode.REPEAT);    paint.setShader(shader);    //绘制圆    c.drawCircle(x, y, radius, paint);}
你可能感兴趣的文章
angular ui-router:简单的单页面嵌套路由的实现过程
查看>>
Poi导出产生OOM解决方案
查看>>
YYImage源码剖析与学习
查看>>
闭包和一部电影的关系
查看>>
小程序【二】
查看>>
使用Intellij创建springboot项目Spring Initializr Error 403
查看>>
0617 - 只做核心业务
查看>>
使用MVVM尝试开发Github客户端及对编程的一些思考
查看>>
算法-基础(一)数组基本操作 和 静态方法(后面编写算法的时候会用到)
查看>>
浏览器安全之同源策略
查看>>
把vue-cli build的结果放到服务器上
查看>>
JSON入门看这一篇就够了
查看>>
vue + vuex + koa2开发环境搭建及示例开发
查看>>
(二)神经网络入门之Logistic回归(分类问题)
查看>>
秒杀流量控制的执行方案
查看>>
[译][摘录]HEVC编码中的多视域和3D扩展,第四部分:3D-HEVC编码技术
查看>>
BEM命名 css模块化解决方案
查看>>
使用Tower克隆gitLab项目
查看>>
前端js压缩图片并上传
查看>>
我的Java设计模式-工厂方法模式
查看>>