android 进度加载 水满,Android开发学习——Day27(自定义控件二&实战:饼状铺满、仪表盘加载、水波动画和水波加载)...

学习目的

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

学习过程

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

技术

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

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实现:

de26d141d850

实现效果--饼状铺满

java实现:

de26d141d850

实现效果--饼状铺开

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

de26d141d850

代码实现--抽象方法

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

de26d141d850

代码实现--绘制

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

de26d141d850

代码实现--动画设置

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

de26d141d850

代码实现--xml配置

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

de26d141d850

代码实现--java配置

2.仪表盘加载

先看看效果啥样子:

de26d141d850

实现效果--仪表盘加载

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

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

de26d141d850

代码实现--画笔初始化

de26d141d850

代码实现--绘制

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

de26d141d850

代码实现--点击事件

de26d141d850

代码实现-改变进度值

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

de26d141d850

代码实现--xml配置

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

3.水波加载

待更新...

感悟

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值