先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
正文
<sizeandroid:width=“20dp”
android:height=“20dp”/>
UI控件不满足我们的需求的时候,就需要自定义View。自定义view的一个重点就是实现就是去重写他的绘制过程,也就是View.onDraw(Canvas canvas)方法,它里面就是绘制图形的过程了,比如说一个Button,绘制按钮和按钮上的文字都是在它自己的onDraw方法中完成的。如果你想给ImageView加个蒙版,可以继承ImageView并且重写他的onDraw方法,调用完父类的onDraw之后,再自己Canvas来画一个黑色的半透明矩形,这样就可以对现有的控件进行加工了。
Canvas是画布,你绘制东西的时候就是绘到了这个画布上,给用户显示的东西也是这个画布上的东西。通常来说,当你调用到onDraw方法的时候对应的View已经确定了他的宽度和高度(关于View的measure和layout过程以后再详述)。那么在Canvas上,你画的范围就只有View对应的大小了。我们用代码来描述下:
1 | protected void onDraw(Canvas canvas) { |
2 | super .onDraw(canvas); |
3 | int verticalCenter = getHeight() / 2 ; |
4 | int horizontalCenter = getWidth() / 2 ; |
5 | int circleRadius = 200 ; |
6 | Paint paint = new Paint(); |
7 | paint.setAntiAlias( false ); |
8 | paint.setColor(Color.RED); |
9 | canvas.drawCircle( horizontalCenter, verticalCenter- 250 , circleRadius, paint); |
10 |
11 | paint.setAntiAlias( true ); |
12 | paint.setStyle(Paint.Style.STROKE); |
13 | paint.setStrokeWidth( 20 ); |
14 | canvas.drawCircle( horizontalCenter, verticalCenter+ 250 , circleRadius, paint); |
15 | } |
这个View的大小可以通过getHeight()和getWidth()来获得。我们准备画两个圆圈,半径都是200。我们主要用到的方法是drawCircle()方法,参数的意义分别是圆心的x,y坐标,半径和所使用的画笔Paint。
Paint是画笔,Canvas是画布,画笔控制了所画东西的颜色大小字体等等。在画第一个圆的时候,我们通过Paint.setAntiAlias方法设置抗锯齿属性为false,并设置颜色为红色。
在画第二个圆的时候,我们打开了抗锯齿。将Paint的风格设为STROKE,也就是只画边框。然后设置边框宽度为20.
你可以将上面的代码运行一下(Demo的github地址:https://github.com/fookwood/AndroidGraphicsDemo)
所画出来的东西是符合我们预期的。上面的圆是实心,下面的是空心,而且上面的圆边缘会有锯齿感,而下面的没有。在用Canvas绘制一些矢量图形的时候,比如矩形,圆形,文字的时候我们通常会通过Paint打开抗锯齿。
最后
**要想成为高级安卓工程师,必须掌握许多基础的知识。**在工作中,这些原理可以极大的帮助我们理解技术,在面试中,更是可以帮助我们应对大厂面试官的刁难。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-8fkiTo95-1713684146502)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!