日结| 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);
}
}
网友评论