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

前言:

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

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


效果图
WheelView的另一种方式,适用任何布局方式整个childView旋转_第1张图片
垂直与水平方向滑动

由于原理与上篇文章讲述差不多,就不再详细介绍,旋转的逻辑放到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

你可能感兴趣的:(WheelView的另一种方式,适用任何布局方式整个childView旋转)