美文网首页Android自定义ViewAndroid自定义View
WheelView的另一种方式,适用任何布局方式整个childV

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

作者: youxiaochen | 来源:发表于2017-10-13 14:17 被阅读328次

    前言:

    上一篇文章讲述了通过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

    相关文章

      网友评论

        本文标题:WheelView的另一种方式,适用任何布局方式整个childV

        本文链接:https://www.haomeiwen.com/subject/iyszyxtx.html