美文网首页
程序员自我修养之UI提高篇

程序员自我修养之UI提高篇

作者: 巴菲伟 | 来源:发表于2021-03-04 20:14 被阅读0次

    一、setContentView是如何添加到屏幕上显示

        1.顶层创建DecorView,是在PhoneWindow里使用

        2.在DecordView添加ViewGroup

        3.在ViewGroup去添加控件以及ViewGroup

    view显示屏幕的大致图

    二、view绘制大致流程

    view的绘制流程

        requestLayout和invalidate的区别:

        requestLayout : 它是重新调用onMeasure、onLayout() 方法

        invalidate : 重新调用onDraw的方法

    三、深度解析UI测量的过程

        DecorView的MeasureSpec的测量规则和计算:

        LayoutParams.MATCH_PARENT: 最大模式,窗口大小,也就是windowSize的大小

        LayoutParams.WRAP_CONTENT : 自适应模式,最大设置为decorView的大小

        固定大小 : 精确模式,大小为LayoutParams的大小

    decorView的MeasureSpec的测量

        自己写的控件的MeasureSpec的测量规则和计算

        getChildMeasureSpec的参数讲解:

        int spec :  父容器的测量格式

        int padding :  父容器当前使用情况

        int childDimension :   代表子空间LayoutParams的宽度、高度的大小

    布局的源代码 测量子布局的算法

        ViewGroup测量过程:onMeasure(测量子控件宽、高) --> setMeasuredDimension(设置测量父布局的宽、高,在自定义view中用的比较多)-->setMeasuredDimensionRaw(设置最终值)

        View测量过程:onMeasure(测量自身宽、高) --> setMeasuredDimension(设置自身的宽、高,在自定义view中用的比较多)-->setMeasuredDimensionRaw(设置最终值)

    四、深度解析UI布局的过程

        ViewGroup : 调用onLayout的方法,调用child.layout递归来摆放子控件位置

        View :调用view.layout通过left、right、top、buttom来确定自身位置

    五、深度解析UI绘制的过程

        1.Paint常用的API讲解

    常见Paint的API使用

        2.接口显示效果图

       setStrokeJoin接口显示

    setStrokeJoin接口

        setStrokeCap接口显示效果

    setStrokeCap接口

        3.代码演示以及展示效果

    渲染器的使用

           LinearGradient 线性渲染器展示效果

    LinearGradient效果图

            RadialGradient环形渲染器展示效果

    RadialGradient效果图

            SweepGradient扫描渲染器展示效果

    SweepGradient效果图

            BitmapShader 有三种不同模式展示,这里只展示两种效果

    BitmapShader模式之REPEAT BitmapShader模式之MIRROR

            ComposeShader组合渲染图展示效果

    ComposeShader展示效果

    六、涂层渲染混合模式讲解

        1.常见使用的方法mPaint.setXfermode() 、ComposeShader、PorterDuffColorFilter  

            注意:在有些版本不支持硬件加速,所以使用涂层必须关掉硬件加速,可以看看刮刮卡实现,和这个原理很类似

        2.十八种模式具体讲解

            CLEAR :  绘制都不会提交到画布上

            SRC :显示上层绘制图像

            DST : 显示下层绘制图像

            SRC_OVER : 正常绘制,上层居上显示

            DST_OVER :  正常绘制,下层居上绘制

            SRC_IN : 取两层交集的地方,显示上层

            DST_IN : 取两层交集的地方,显示下层

            SRC_OUT : 取上层绘制非交集部分,交集部分为透明

            DST_OUT :  取下层绘制非交集部分,交集部分为透明

            SRC_ATOP : 取上层交集部分和下层非交集部分

            DST_ATOP : 取下层交集部分和上层非交集部分

            XOR : 去除两图层交集地方

            DARKEN :  取两层图全部区域,交集部分颜色变暗

            LIGHTEN :  取两图层全部区域,交集部门颜色变亮

            MULTIPLY : 取两图层交集地方,重叠地方颜色叠加

            SCREEN :  取两图层全部区域,交集部分滤色

            ADD : 取两图层全部区域,交集部分饱和度相加

            OVERLAY :取两图层全部区域,交集部分叠加

    涂层渲染混合图 代码展示以及注意事项

    七、图片做滤镜处理

        1.去除颜色或者让某些颜色更亮

    LightingColorFilter接口

        2.图片和颜色混合

    PorterDuffColorFilter接口

        3.修改图片颜色方法:修改偏移量、颜色数字变大或者变小

    ColorMatrixColorFilter接口

    八、Canvas的使用

        1.位置、形状变化的API接口

    canvas常用接口

       2.保存canvas画布的存储、恢复的API接口

    canvas常用接口

    相关文章

      网友评论

          本文标题:程序员自我修养之UI提高篇

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