美文网首页
Android自定义View之基础概念

Android自定义View之基础概念

作者: 码农ing | 来源:发表于2021-05-16 22:10 被阅读0次

     优秀是一种习惯,越优秀就越想去努力,越努力就会越优秀。反过来也是一样,活得越差就越不想要去做些什么,或许是无力改变或许是真的太差了无从下手,于是越来越差,越差就越没动力去做,渐渐呆在舒适区,坐以待毙。

     现在过的每一天,都是余生中最年轻的一天...


       自定义View对于一个Android开发者来说是必须掌握的知识点,也是Android开发进阶的必经之路。

      为什么要自定义View?主要是Android系统内置的View无法实现我们的需求,我们需要针对我们的业务需求定制我们想要的View。

      自定义View的最基本的三个方法分别是:onMeasure()、onLayout()、onDraw()。

View在Activity中显示出来,要经历测量、布局和绘制三个步骤,分别对应三个动作:measure、layout和draw。

测量:onMeasure()决定View的大小;

布局:onLayout()决定View在ViewGroup中的位置;

绘制:onDraw()决定绘制这个View。

自定义控件又分为自定义View和自定义ViewGroup,自定义View只需要重写onMeasure()和onDraw()即可,而自定义ViewGroup则只需要重写onMeasure()和onLayout()。

SpecMode指定了测量的模式,分为三类:

(1)UNSPECIFIED

父容器对View无任何限制,一般用于系统内部

(2)EXACTLY

View的最终大小就是SpecSize指定的值,适用于指定具体大小和match_parent的形式

(3)AT_MOST

 父容器指定了一个SpecSize,View不能超过它,适用于wrap_content

      在自定义view时,时常用到刷新view的方法,这时候就会有三个方法供我们选择:requestLayout()、invalidate()、postInvalidate(),其实invalidate和postInvalidate这两个方法作用是一样的,唯一不同的是invalidate用在主线程,而postInvalidate用在异步线程。

      requestLayout会调用measure和layout 等一系列操作,requestlayout肯定会调用measure和layout,但不一定调用draw。invalidate 只会调用draw,而且肯定会调,即使什么都没有发生改变,它也会重新绘制。所以如果有布局需要发生改变,需要调用requestlayout方法,如果只是刷新动画,则只需要调用invalidate方法。


相关文章

网友评论

      本文标题:Android自定义View之基础概念

      本文链接:https://www.haomeiwen.com/subject/mbwrjltx.html