WheelView的另一种方式,适用任何布局方式整个childView旋转

前言:

上一篇文章讲述了通过Camera, Matrix 3d旋转+RecyclerView实现和(IOS时间地址选择3D)滚轮控件一样效果的WheelView,但是只限于画不同颜色的文本,如果要实现适配器中任意布局,就需要另一种实现方式

更多文章请关注:http://www.jianshu.com/u/b1cff340957c


效果图
垂直与水平方向滑动

由于原理与上篇文章讲述差不多,就不再详细介绍,旋转的逻辑放到RecyclerView的drawChild中实现

@Override
    public boolean drawChild(Canvas canvas, View child, long drawingTime) {
        canvas.save();
        if (orientation == LinearLayoutManager.VERTICAL) {
            //垂直方向旋转画笔,再画child
            verticalCanvasForDrawChild(canvas, child, translateX(centerX));
        } else {
            //水平方向旋转画笔,再画child
            horizontalCanvasForDrawChild(canvas, child);
        }
        boolean drawChild = super.drawChild(canvas, child, drawingTime);
        canvas.restore();
        return drawChild;
    }
源码 https://github.com/youxiaochen/WheelView2-3d
总结:在类似线性布局的ViewGroup中重写drawChild实现3D旋转的原理基本一致,都是在ViewGroup分发画child子控件时,将Canvas进行旋转与偏移,原理也可作用于LinearLayout, ListView, Gallery, ViewPager等等......,随意发挥!

更多文章请关注:http://www.jianshu.com/u/b1cff340957c

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容