叶子自律成长营

孤独与痛苦其实是人生的常态

2019-02-25  本文已影响13人  Eren丶耶格尔

日结| Day27

孤独与痛苦其实是人生的常态,有的人不愿意接受或者他没有意识到,所以他需要把快乐的时光分享到各种社交平台上,来欺骗自己以及别人他是快乐的;另外一些人则接受了这个事实

早起

6点50准时起床,阅读《活着》

运动

俯卧撑:3组20个,哑铃:3组10个,深蹲:3组10个

电影

看了一部电影《脸对脸,背对背》,难得的国产好电影。深刻反应中国社会的人情现实和处事根本。
有的时候机关算尽也不一定如愿,不如放下争执,专注于提升自我,相信有一天,定然会有所收获。

阅读

阅读新书《活着》

学习

《自定义控件》第七章 贝济埃曲线实现部分,绘制波浪效果


示例图

具体代码如下:

public class AnimWaveView extends View {

    private Paint paint;
    private Path path = new Path();
    // 波浪长度
    private int itemWaveLength = 1200;
    // 动画移动指数
    private int dx;

    public AnimWaveView(Context context) {
        super(context);
        init();
    }


    public AnimWaveView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public AnimWaveView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    // 初始化
    private void init() {
        path = new Path();
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.GREEN);
        paint.setStyle(Paint.Style.FILL);

        startAnim();
    }

    // 开始动画
    private void startAnim() {
        ValueAnimator animator = ValueAnimator.ofInt(0, itemWaveLength);
        animator.setDuration(2000);
        animator.setRepeatCount(ValueAnimator.INFINITE);
        animator.setInterpolator(new LinearInterpolator());
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                dx = (int) animation.getAnimatedValue();
                postInvalidate();
            }
        });
        animator.start();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        path.reset();
        int originY = 300;
        int halfWaveLen = itemWaveLength / 2;
        // 将起始点向右移动即可实现,将 path 移动到向左一个波长,移动一个波长的长度,波纹就会重合,就可以实现无限循环
        path.moveTo(-itemWaveLength + dx, originY);
        // for 循环画出当前屏幕中可以容得下的所有波形
        for (int i = -itemWaveLength; i < getWidth() + itemWaveLength; i += itemWaveLength) {
            path.rQuadTo(halfWaveLen / 2, -100, halfWaveLen, 0);
            path.rQuadTo(halfWaveLen / 2, 100, halfWaveLen, 0);
        }
        // 闭合
        path.lineTo(getWidth(), getHeight());
        path.lineTo(0, getHeight());
        path.close();
        // 绘制
        canvas.drawPath(path, paint);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读