美文网首页
自定义控件

自定义控件

作者: 书虫大王X | 来源:发表于2021-06-29 10:32 被阅读0次

    Android-窗口 自定义view bitmap

    1、为什么要自定义控件:现有的控件无法满足我们的需求或是达不到我们想要的效果
    2、自定义控件也就是继承View或者View的派生类,然后再重写类中的内部方法。通常来说自定义控件分为三种:

    1.自定义View:继承View
    2.基于现有组件:继承View的派生类
    3.组合的方式:自定义控件中包含了其他的组件

    3、自定义控件流程:

    • 测量-Measure过程是计算视图大小,View measure过程相关方法主要有三个:
    • public final void measure(int widthMeasureSpec, int heightMeasureSpec)
    • protected final void setMeasuredDimension(int measuredWidth, int measuredHeight)
    • protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
    • measure调用onMeasure,onMeasure测量宽度、高度然后调用setMeasureDimension保存测量结果,measure,setMeasureDimension是final类型,view的子类不需要重写,onMeasure在view的子类中重写。
    • 布局-Layout过程用于设置视图在屏幕中显示的位置,View layout过程相关方法主要要三个:
    • public void layout(int l, int t, int r, int b)
    • protected boolean setFrame(int left, int top, int right, int bottom)
    • protected void onLayout(boolean changed, int left, int top, int right, int bottom)
    • layout通过调用setFrame(l,t,r,b),l,t,r,b即子视图在父视图中的具体位置,onLayout一般只会在自定义ViewGroup中才会使用
    • 绘制-draw过程主要用于利用前两步得到的参数,将视图显示在屏幕上,到这里也就完成了整个的视图绘制工作。
    • public void draw(Canvas canvas)
    • protected void onDraw(Canvas canvas)
    • 通过调用draw函数进行视图绘制,在View类中onDraw函数是个空函数,最终的绘制需求需要在自定义的onDraw函数中进行实现,比如ImageView完成图片的绘制,如果自定义ViewGroup这个函数则不需要重载。

    相关文章

      网友评论

          本文标题:自定义控件

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