美文网首页
Android开发学习——Day27(自定义控件二&实战:饼状铺

Android开发学习——Day27(自定义控件二&实战:饼状铺

作者: 明天_ff | 来源:发表于2019-10-29 23:01 被阅读0次

    学习目的

    学习控件的自定义操作之一——绘画;尝试绘画出一些系统没有的或自己需求的控件。

    学习过程

    掌握运用绘画的方式,自定义控件,写一些有趣的自定义视图。

    技术

    一、绘制自定义控件三要素:

    1.画布(canvas):承载绘画要素

    2.画笔(Paint):设置绘制的一些参数

    //实例化对象,转为矢量图

    Paint paint =new Paint(Paint.ANTI_ALIAS_FLAG);

    //设置线条颜色(灰色)

    paint.setColor(Color.GRAY);

    //设置空心(不填充)

    paint.setStyle(Paint.Style.STROKE);

    //设置线条粗细(25)

    paint.setStrokeWidth(25);

    //设置图形起锋和提锋(圆角)

    paint.setStrokeCap(Paint.Cap.ROUND);

    ...

    3.路径(Path):设置绘制的路径图形

    //实例化对象

    Path mPath =new Path();

    //设置路径的起始点

    mPath.moveTo(50,150);

    //画线

    mPath.lineTo(450,150);

    //画贝塞尔曲线

    //way1

    mPath.cubicTo(50,500,200,300,350,500);

    mPath.cubicTo(500,700,650,300,850,200);

    //way2

    mPath.moveTo(50,500);

    mPath.quadTo(200,300,350,500);

    mPath.quadTo(500,700,650,500);

    二、系统自调用的几个方法

    要正确把握代码的写入时机,则必须要明确如下几个方法的系统调用顺序和作用:

    1.类继承的抽象方法

    调用初始化的方法

    2.onMeasure( )方法

    测量控件的尺寸

    3.onSizeChanged( )方法

    控件的尺寸确定好了

    4.onDraw( )方法

    具体绘制

    三、实战:饼状铺满、仪表盘加载、水波动画和水波加载

    Step1:自定义控件新建一个类,继承于View,实现其抽象方法

    Step2:绘制

    1.饼状图

    来看看效果先:

    xml实现:

    实现效果--饼状铺满

    java实现:

    实现效果--饼状铺开

    1>使自定义控件拥有xml和java两种使用方法的实现:

    代码实现--抽象方法

    2>绘制三步走:画布、画笔和路径

    代码实现--绘制

    3>为使绘画动画连贯顺滑,采用ValueAnimator由系统计算绘画的间隔与时间:

    代码实现--动画设置

    4.1>通过xml使用自定义控件:

    代码实现--xml配置

    4.2>通过java使用自定义控件:

    代码实现--java配置

    2.仪表盘加载

    先看看效果啥样子:

    实现效果--仪表盘加载

    因为第一个实战例子已经讲过了java创建和使用自定义控件,所以这里仅用xml的方式:

    1>同样的绘制三步走:画布、画笔和路径

    代码实现--画笔初始化 代码实现--绘制

    2>通过点击事件来模拟该仪表盘加载

    代码实现--点击事件 代码实现-改变进度值

    3>最后别忘记了在xml中配置该自定义控件

    代码实现--xml配置

    其中需要注意的是,进度文本的位置计算和重绘进度值的判断条件。

    3.水波加载

    待更新...

    感悟

    通过自定义控件的进一步学习,自己对其的理解有深入了几分。自定义控件是提供给自己或者他人使用的工具,具有其针对性,实用性,灵活性。上述实战项目都比较简易,但能够体现自定义控件的一些基础的实现思路。整个过程我的思考历程还是较为顺畅,基本没有卡壳的地方,不过还是得戒骄戒躁,继续学习。

    相关文章

      网友评论

          本文标题:Android开发学习——Day27(自定义控件二&实战:饼状铺

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