前言:  

  自定义控件必需的两个类:Paint与Canvas

  Paint    ---  相当于绘图的"笔"

  Canvas --- 相当于绘图的"纸"

  

一、Paint  

  绘图笔,即用来设定比如 颜色、线条宽度、线条透明度等熟悉的。

  看一下Paint类所有的setXX() 方法

  

  

  其中常用的:

  • paint.setAntiAlias(true);//抗锯齿功能
  • paint.setColor(Color.RED);  //设置画笔颜色
  • paint.setStyle(Style.FILL);//设置填充样式
  • paint.setStrokeWidth(10);//设置画笔宽度 ,单位px
  • paint.setShadowLayer(10, 15, 15, Color.GREEN);//设置阴影

  这里简单介绍下 第3个、第5个 方法的属性

  1、paint.setStyle(Style.XXX); //设置填充样式

  

  Style.FILL ,即 画笔填充 ,比如你要画一个矩形,那么这个矩形内部是填充了的

  

  Style.STROKE ,即画笔画出的只有边框,

  

  Style.FILL_AND_STROKE ,即边框线条和内部填充都有

  

 

  2、paint.setShadowLayer(10, 15, 15, Color.GREEN);//设置阴影

    

   (1)、radius(角度),即阴影的倾斜角度,

     (2)、dx ,即阴影x方向偏移量

   (3)、dy ,即阴影y方向偏移量

     (4)、shadowColor ,即阴影的颜色

  

二、Canvas

  画布、纸。

  Canvas类的主要方法是drawXXX() , 即 画线条,画圆形,画矩形,画文字,画椭圆 等等

  

三、实践

  我们写几个例子,用Paint控制画笔的线条宽度,颜色等属性

          用Canvas控制画出的形状

 首先自定义一个类继承自 View 类 重写三个构造方法

  

 重写onDraw()方法,该方法用于绘制自定义控件

  @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas); // 设置画笔的属性
paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
paint.setStrokeWidth(); //单位px
paint.setTextSize(); //设置文本大小 // 设置画布的属性 ,注意这里onDraw()方法参数有Canvas对象了 不要在 new 一个了
canvas.drawRGB(, ,);
canvas.drawLine(,,,,paint); //画一条从坐标(200,200) 到 坐标(600,200) 颜色为红色的 横向直线
canvas.drawRect(,,,,paint); //画一条左上角坐标(200,420) ,宽度400 高度100的 红色实心矩形
canvas.drawCircle(,,,paint); //画一条圆心坐标(400,800) 半径100 的红色实心圆形
canvas.drawText("这是画出来的文本",,,paint); //画一条左侧开始坐标(200,1000)的文本 }

 

  在activity中使用

  

效果图:

自定义控件详解(一):Paint类与Canvas类的更多相关文章

  1. 自定义控件详解(三):Canvas效果变换

    Canvas 画布 从前面我们已经知道了 Canvas 类可以绘出 各种形状. 这里学习一下Canvas 类的变换效果(平移,旋转等) 首先需要了解一下Canvas 画布, 我们用Canvas.Dra ...

  2. 自定义控件详解(二):Path类 相关用法

    Path:路径 绘制路径:void drawPath (Path path, Paint paint) Path 可以绘制的路径 一.直线路径 1.基本方法 void moveTo (float st ...

  3. 《Android群英传》读书笔记 (2) 第三章 控件架构与自定义控件详解 + 第四章 ListView使用技巧 + 第五章 Scroll分析

    第三章 Android控件架构与自定义控件详解 1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWin ...

  4. WindowsPhone自定义控件详解(二) - 模板类库分析

    转自:http://blog.csdn.net/mr_raptor/article/details/7251948 WindowsPhone自定义控件详解(一) - 控件类库分析 上一节主要分析了控件 ...

  5. 自定义控件详解(四):Paint 画笔路径效果

    Paint  画笔 ,即用来绘制图形的"笔" 前面我们知道了Paint的一些基本用法: paint.setAntiAlias(true);//抗锯齿功能 paint.setColo ...

  6. 自定义控件详解(六):Paint 画笔MaskFilter过滤

    首先看一个API:setMaskFilter(MaskFilter maskfilter): 设置MaskFilter,可以用不同的MaskFilter实现滤镜的效果,如滤化,立体等. 以下有两个Ma ...

  7. WindowsPhone自定义控件详解(一) - 控件类库分析

    转自:http://blog.csdn.net/mr_raptor/article/details/7251942 为了让你的应用程序更有个性,我们通常会在WP7开发过程中会自定义自己风格的控件,自定 ...

  8. 安卓中Paint类和Canvas类的方法汇总

    Paint类的常用的方法 1.setColor方法,用于设置画笔的颜色,public void setColor(int color)//参数color为颜色值,也可以使用Color类定义的颜色Col ...

  9. Android 控件架构与自定义控件详解

    架构: PhoneWindow 将一个 DecorView 设置为整个应用窗口的根 View,这里面所有 View 的监听事件,都通过 WindowManagerService 来接收.DecorVi ...

随机推荐

  1. Java学习笔记36(File类)

    File类可以对操作系统中的文件进行操作: File类的静态成员变量: package demo; import java.io.File; public class FileDemo { publi ...

  2. hdu 6058---Kanade's sum(链表)

    题目链接 Problem Description Give you an array A[1..n]of length n. Let f(l,r,k) be the k-th largest elem ...

  3. Django--分页器(paginator)

    1 Django的分页器(paginator)简介 在页面显示分页数据,需要用到Django分页器组件 from django.core.paginator import Paginator Pagi ...

  4. Cordova安装、设置代理和引入插件

    cardova代理 $ npm config --global set registry http://registry.cnpmjs.org cardova添加插件 格式:cordova plugi ...

  5. jdk8- list操作

    本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. student类 public class Student { private String age; ...

  6. Eureka自我保护模式——难点重点

    一.开启Eureka自我保护模式访问Eureka主页时,如果看到这样一段大红色的句子: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ...

  7. rabbitMQ和对应的erlang版本匹配

    来源自https://www.rabbitmq.com/which-erlang.html erlang安装包下载地址 https://packages.erlang-solutions.com/er ...

  8. JVM笔记10-性能优化之高级特性

    一.垃圾回收器配置和 GC 日志分析 1.堆典型配置: 32位的操作系统限制堆大小介于1.5G到2G,64位操作系统无限制,同时系统可用虚拟内存和可用物理内存都会限制最大堆的配置. 堆空间分配典型配置 ...

  9. SpringMVC之json数据交互

    在Spring3.1之后,如果使用<mvc:annotation-driven />,即使用注解驱动,默认情况下已经配置了MappingJackson2HttpMessageConvert ...

  10. JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...