Path
1.moveTo moveTo表示将绘制点移动到某一个坐标处,该方法并不会进行绘制,主要是用来移动画笔。默认情况下起始坐标位于(0,0)点。
2.lineTo lineTo表示绘制一条直线:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Path path = new Path();
path.lineTo(50,
50);
canvas.drawPath(path, paint);
3.quadTo 用于绘制二阶贝塞尔曲线,从上一个点开始,绘制二阶Bezier曲线(x1,y1)为控制点, (x2,y2)为终点如果之前没有调用过 moveTo(),则默认从 (0,0)作为起点绘制。
/**
- 从上一个点开始,绘制二阶Bezier曲线
- (x1,y1)为控制点, (x2,y2)为终点
- 如果之前没有调用过 moveTo(),则默认从 (0,0)作为起点绘制。
*/
public void quadTo(float x1, float y1, float x2, float y2) ;
/**
- 和quadTo相同,只不过这里是使用的是相对坐标。
*/
public void rQuadTo(float dx1, float dy1, float dx2, float dy2)
bitmap绘制
1、获取图片的bitmap
private val jumpBitmap1 = BitmapFactory.decodeResource(context.resources, R.drawable.jump_1)
2、将bitmap绘制在画布上
/**
- @param bitmap The bitmap to be drawn
- @param src May be null. The subset of the bitmap to be drawn
- @param dst The rectangle that the bitmap will be scaled/translated to fit into
- @param paint May be null. The paint used to draw the bitmap
*/
public void drawBitmap(@NonNull Bitmap bitmap, @Nullable Rect src, @NonNull Rect dst,
@Nullable Paint paint) {
super.drawBitmap(bitmap, src, dst, paint);
}
其中 Rect src是图片的子域,通过设置src的大小可以截取图片的部分区域,dst指图片在画布上面的位置,一般情况下不裁剪图片的话,设置src为null就可以了。
实现
1、跳绳实现
如上图,path的起点和中点在屏幕的中点两边,中点的点是控制贝塞尔曲线的点,这个点上下动就可以控制绘制出一条跳绳。要注意ValueAnimator.ofInt(0, b.bottom / 2, b.bottom, b.bottom / 2, 0)
的值是从0到.bottom / 2,再到bottom,在到bottom / 2,最后回到0的,如果不是这样直接从(0-》bottom)的话,贝塞尔曲线的运动轨迹就不是连续的。
2、跳动的火柴人
跳动的火柴人由两种状态,由动画的值确定,根据动画的值来改变火柴人的位置,火柴人初始位置是在画布的正中间,根据动画的值,改变上下位置,同时更改bitmap。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
最后
现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
上述【高清技术脑图】以及【配套的架构技术PDF】点击:Android架构视频+BAT面试专题PDF+学习笔记,或者私信回复【技能提升】即可获取!
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!
ics/618156601),或者私信回复【技能提升】即可获取!**
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!
Android架构师之路很漫长,一起共勉吧!