自定义View入门-绘制基础(1)

### 前言
说道自定义View,我们一定会想到,自定义View的绘制流程
- 测量阶段(measure)
- 布局阶段(layout)
- 绘制阶段(draw)

我们看到的一些炫酷的view效果,都是在绘制方法里去实现的, 也就是`draw(Canvas)`, 我们先放下 测量与布局, 先从绘制基础开始学起。

### 详解

说到`ondraw(Canvas)`方法,不得不提`Paint`与`Canvas`。我们先来看`Paint`
###### 1.Paint
Paint就是"画笔",我们先去看下Paint类的源码解释:

```
**
* The Paint class holds the style and color information about how to draw
* geometries, text and bitmaps.
*/
```
Paint类可以画几何图形,文本与bitmap。
Paint类方法比较多, 这里拿Paint.Style举例:

- Paint.Style.FILL:填充内部
- Paint.Style.FILL_AND_STROKE :填充内部和描边
- Paint.Style.STROKE :描边
![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190921160047699-1410664224.png)

###### 2.Canvas
**(1).定义**
Canvas就是“画布”,我们先去看下Canvas类的源码解释:
```
* The Canvas class holds the "draw" calls. To draw something, you need
* 4 basic components: A Bitmap to hold the pixels, a Canvas to host
* the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect,
* Path, text, Bitmap), and a paint (to describe the colors and styles for the
* drawing).
```
- 承载像素的位图
- 持有绘画方法调用的画布
- 描述画图颜色和风格的画笔
- 画图的类型。

**(2).绘制方法**

方法比较多了,这里我就随便举几个例子:
- 画线
```
Paint paint=new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(20);
paint.setStyle(Paint.Style.FILL);
canvas.drawLine(200,200,450,200,paint);
```
![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190921160048089-269409115.png)

- 画矩形
```
Paint paint=new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(50);
paint.setStyle(Paint.Style.FILL );
canvas.drawRect(100,100,200,200,paint);
```
![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190921160048326-68976265.png)

- 画扇形-140度
```
Paint paint=new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(50);
paint.setStyle(Paint.Style.FILL );
canvas.drawArc(100,100,400,400,0,140,false,paint);
```
![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190921160048569-499644571.png)
更多的方法以及方法的含义可以去下面的API地址去看!
[API地址](https://developer.android.google.cn/reference/android/graphics/Canvas.html)

今天就讲到这里 ,绘制基础还有一个非常重要的类,**Paht(路径)类**,下一节讲一下。
希望对大家有所帮助!

大家可以关注我的微信公众号:「秦子帅」一个有质量、有态度的公众号!

![公众号](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190921160048726-1254022071.jpg)

原文地址:https://www.cnblogs.com/qinzishuai/p/11563423.html

时间: 2024-10-09 14:07:55

自定义View入门-绘制基础(1)的相关文章

Android自定义View入门

View架构简介: 在Android中,控件主要以ViewGroup和View的形式存在.ViewGroup控件可以包含多个View控件,该复合控件负责其内部所有子控件的测量和绘制,并传递交互事件.如图, 在Android的移动开发中,每个Activity都包含了一个PhoneWindow对象,该对象将DecorView设置为应用窗口的根View.该视图上的所有监听事件都通过WindowManagerService来进行接收,并通过Activity来回调相应的onClickListener.De

自定义view入门

如何自定义控件主要分为以下几个步骤: 1.自定义属性的声明与获取 (1)分析需要的自定义属性 (2)在res/values/attrs.xml定义声明,如 <resources> <declare-styleable name="HookView"> <attr name="loadingText" format="string" /> <attr name="completeText"

Android自定义view之绘制实用型的柱形图和折线图

概述: 前几天突然需要做两种图表--柱形图.折线图,于是第一反应是先看看网上有没有现成的,结果有是有,但都不是我想要的,而且大多数不是用纯android代码完成,HTML5似乎完成这类工作要容易得多,但是我本人并不会HTML5,只能黯然神伤,掩面流泪,最终只能自己敲代码了. **知识点:**android自定义view.图形图像.Fragment.MVC模式. Demo 界面是模仿红圈营销搭建的 折线图: 代码,注释很详细,直接看代码就行了: public class LineChartView

android 自定义view,绘制与onTouchEvent事件(一)

绘制 构造方法 自定义view需要继承View类,重写两个构造方法 //用在代码new该view对象,初始化 public MyView(Context context) { super(context); init(); } //一般添加构造--->view放进布局,系统实例化 public MyView(Context context, AttributeSet attrs) { super(context, attrs); init(); } Paint对象 绘制view需要使用Paint

android 自定义view 前的基础知识

本篇文章是自己自学自定义view前的准备,具体参考资料来自 Android LayoutInflater原理分析,带你一步步深入了解View(一) Android视图绘制流程完全解析,带你一步步深入了解View(二) Android视图状态及重绘流程分析,带你一步步深入了解View(三) Android自定义View的实现方法,带你一步步深入了解View(四) 这位大哥的系列博文,相当于自己看这些的一个思考吧. 一.首先学layoutInflater. 相信接触Android久一点的朋友对于La

自定义View之绘制圆环

一.RingView 自定义的view,构造器必须重写,至于重写哪个方法,参考如下: ①如果需要改变View绘制的图像,那么需要重写OnDraw方法.(这也是最常用的重写方式.) ②如果需要改变view的大小,那么需要重写OnMeasure方法. ③如果需要改变View的(在父控件的)位置,那么需要重写OnLayout方法. ④根据上面三种不同的需要你可以组合出多种重写方案,你懂的. 注释信息代码中比较详细. package com.example.customerviewdemo2; impo

自定义View之绘制交替进度条

一.attrs.xml 这进度条交替,涉及到一些属性,例如:进度条的颜色和速度等,这些属性是View里面没有的,所以需要自定义. <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="firstColor" format="color" /> <attr name="secondColor" f

Android官方开发文档Training系列课程中文版:创建自定义View之View的绘制

原文地址:http://android.xsoftlab.net/training/custom-views/custom-drawing.html#draw 自定义View最重要的部分就是它的样子了.自定义View的绘制根据应用的需要或者简单亦或者复杂.这节课的内容涵盖了大多数通用的知识点. 重写onDraw()方法 绘制自定义View很重要的一个步骤就是重写它的onDraw()方法.该方法含有一个Canvas对象作为参数,用来使View绘制它本身的内容.Canvas类定义了用于绘制文本,线条

Android应用自定义View绘制方法手册

背景 这篇迟迟难产的文章算是对2015前半年的一个交代吧,那时候有一哥们要求来一发Android Canvas相关总结,这哥们还打赏了,实在不好意思,可是这事一放就给放忘了,最近群里小伙伴催着说没更新博客,坐等更新啥的,随先有这么一篇Android应用开发超级基础的文章诞生了(因为这种文章最好写哈,就是用熟了就行).不得不说下这么久为何一直没更新博客的原因了,首先遇上了过年,我个人崇尚过节就该放下一切好好陪陪亲人,珍惜在一起的时光:其次今年开年很是蛋疼,不是不顺当就是深深的觉得被坑,所以心情也就