一只贱贱的小鬼by canvas

一只贱贱的小鬼,信誓旦旦地冲去,灰头土脸地回来。
代码下载
灵感来于dribbble,主要是利用贝塞尔曲线画裙边,先上图

效果.png
效果.gif

主要步骤

        drawShadow(canvas);//画阴影
        drawHead(canvas);//画头部
        drawBody(canvas);//画身体
        drawHand(canvas);//画小手

重点是画带有裙边的身体,利用path.quadTo,至于二阶贝塞尔曲线网上一搜一大把...

private void drawBody(Canvas canvas) {
        path.reset();

        float x = (float) ((rectFGhost.width() / 2 - 15) * Math.cos(5 * Math.PI / 180f));
        float y = (float) ((rectFGhost.width() / 2 - 15) * Math.sin(5 * Math.PI / 180f));

        float x2 = (float) ((rectFGhost.width() / 2 - 15) * Math.cos(175 * Math.PI / 180f));
        float y2 = (float) ((rectFGhost.width() / 2 - 15) * Math.sin(175 * Math.PI / 180f));


        path.moveTo(rectFGhost.left + rectFGhost.width() / 2 - x, rectFGhost.width() / 2 - y + rectFGhost.top);
        path.lineTo(rectFGhost.left + rectFGhost.width() / 2 - x2, rectFGhost.width() / 2 - y2 + rectFGhost.top);
        path.quadTo(rectFGhost.right + wspace / 2, rectFGhost.bottom
                , rectFGhost.right - wspace, rectFGhost.bottom - hspace);


        float a = mskirtH;//(mskirtH/2);

        float m = (rectFGhost.width() - 2 * wspace) / 7f;//波动7次

        for (int i = 0; i < 7; i++) {
            if (i % 2 == 0) {
                path.quadTo(rectFGhost.right - wspace - m * i - (m / 2), rectFGhost.bottom - hspace - a
                        , rectFGhost.right - wspace - (m * (i + 1)), rectFGhost.bottom - hspace);
            } else {
                path.quadTo(rectFGhost.right - wspace - m * i - (m / 2), rectFGhost.bottom - hspace + a
                        , rectFGhost.right - wspace - (m * (i + 1)), rectFGhost.bottom - hspace);

            }
        }

        path.quadTo(rectFGhost.left - 5, rectFGhost.bottom
                , rectFGhost.left + rectFGhost.width() / 2 - x, rectFGhost.width() / 2 - y + rectFGhost.top);


        path.close();
        canvas.drawPath(path, mPaint);


    }

最后加入动画效果。控制裙边的张和,运动的轨迹以及小手的位置。
代码下载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,277评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,204评论 4 61
  • 1,定义 状态模式(State)当一个状态的内在状态改变的时候允许改变其行为,这个对象看起来像是改变了其类 2,U...
    Kenny丶Mo阅读 1,657评论 0 0
  • 有点害羞不敢写,就算写了也有点不敢发出去。怕写的不好,怕写的东西被嘲笑! 一直想着写什么,犹豫了好久。后来想着这不...
    胡先生你好阅读 1,592评论 0 1
  • 马咀纪行 说起乡村,脑海里浮现的便是农舍、牲畜棚圈、小卖部、农田等等。想到乡村,便想到了“田园诗人”陶渊明,“榆柳...
    孫陽阅读 4,082评论 0 3