Android画图最基本的三个对象(Color,Paint,Canvas)

三个类都存放在 android.graphics包下

1) Color :颜色对象,相当于现实生活中的 ‘调料’

2) Paint : 画笔对象,相当于现实生活中画图用的 ‘笔’————主要的还是对‘画笔’进行设置

3) Canvas : 画布对象,相当于现实生活中画图用的 ‘纸 或 布’

三者相结合,就能画出基本的图形

常用方法:

1)Color :颜色对象

1.可以通过 Color.颜色名,来获取颜色,应为是静态的,返回一个整数值

2.调用静态的 argb方法,可以调出个性的颜色

alpha 是设置透明度的;red 设置红色; green是设置绿色; blue设置蓝色,范围都是[0-255],0至255 颜色依次加深,

2)Paint : 画笔对象,常用方法

3)Canvas :画布对象 ,绘制常见图形的方法

在android中自定义图形

1)需要继承 View 这个类,所有的组件都是继承于这个类

2)并要实现一个带Context参数的构造函数,因为父类中,没有隐式无参的构造函数

3)需重写父类中的onDraw方法,一切的画图操作将在这进行

1.具体代码:自定义 MyView

  1. package com.shudu;
  2. import android.content.Context;
  3. import android.graphics.BitmapFactory;
  4. import android.graphics.Canvas;
  5. import android.graphics.Color;
  6. import android.graphics.Paint;
  7. import android.view.View;
  8. // 自定义 view,需要实现 一个显式的构造函数,重写 onDraw 方法,一切的操作都在该方法上进行
  9. public class MyView extends View {
  10. public MyView(Context context)
  11. {
  12. super(context);
  13. }
  14. /**
  15. * 要画图形,最起码要有三个对象:
  16. * 1.颜色对象 Color
  17. * 2.画笔对象 Paint
  18. * 3.画布对象 Canvas
  19. */
  20. @Override
  21. public void onDraw(Canvas canvas) {
  22. // TODO Auto-generated method stub
  23. Paint paint = new Paint();
  24. paint.setColor(Color.BLUE);
  25. //设置字体大小
  26. paint.setTextSize(100);
  27. //让画出的图形是空心的
  28. paint.setStyle(Paint.Style.STROKE);
  29. //设置画出的线的 粗细程度
  30. paint.setStrokeWidth(5);
  31. //画出一根线
  32. canvas.drawLine(0, 0, 200, 200, paint);
  33. //画矩形
  34. canvas.drawRect(200, 500, 300, 300, paint);
  35. //画圆
  36. canvas.drawCircle(200, 200, 100, paint);
  37. //画出字符串 drawText(String text, float x, float y, Paint paint)
  38. // y 是 基准线 ,不是 字符串的 底部
  39. canvas.drawText("apple", 60, 60, paint);
  40. canvas.drawLine(0, 60, 500, 60, paint);
  41. //绘制图片
  42. canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 150, 150, paint);
  43. super.onDraw(canvas);
  44. }
  45. }

注意:

画 字符串

//画出字符串 drawText(String text, float x, float y, Paint paint)    // y 是 基准线 ,不是 字符串的 底部,就像 英语本上 写的英文 有些超出了 那根水平线就是基准线

  canvas.drawText("apple", 60, 60, paint);   canvas.drawLine(0, 60, 500, 60, paint);

2.Activity类,在Activity中显示出来

  1. package com.shudu;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. public class Shudu01Activity extends Activity {
  5. /** Called when the activity is first created. */
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(new MyView(this));
  10. }
  11. }

具体效果:

Android画图最基本的三个对象(Color,Paint,Canvas)的更多相关文章

  1. Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  2. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  3. Android应用之《宋词三百首》(二)

    接上回,上回我们讲到MainActivity里面将所有的宋词标题和作者显示到界面的ListView中去,我们接下来的工作是通过点击ListView的Item跳转到ContentActivity里面去显 ...

  4. Android艺术开发探索第三章——View的事件体系(上)

    Android艺术开发探索第三章----View的事件体系(上) 我们继续来看这本书,因为有点长,所以又分了上下,你在本片中将学习到 View基础知识 什么是View View的位置参数 Motion ...

  5. Android群英传笔记——第三章:Android控件架构与自定义控件讲解

    Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...

  6. Android画图系列(二)——自己定义View绘制基本图形

    这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...

  7. 【Android开发VR实战】三.开发一个寻宝类VR游戏TreasureHunt

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53939303 本文出自[DylanAndroid的博客] [Android开发 ...

  8. Android 高级UI组件(三)

    一.popupWindow 1.AlertDialog和PopupWindow最关键的区别是AlertDialog不能指定显示位置,只能默认显示在屏幕最中间(当然也可以通过设置WindowManage ...

  9. Android实现全屏的三种方式

    一.通过代码 requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题栏 getWindow().setFlags(WindowManager.Lay ...

随机推荐

  1. hdu 3089 (快速约瑟夫环)

    Josephus again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. 74.Interesting Sequence(有趣的数列)(拓扑排序)

    Interesting Sequence(有趣的数列)[Special judge] 题目概述:是否存在一个长度为n的整数数列,其任意连续p项之和为正数而任意连续q项之和为负数? 方法:连续项a[i] ...

  3. 01-项目简介Springboot简介入门配置项目准备

    总体课程主要分为4个阶段课程: ------------------------课程介绍------------------------ 01-项目简介Springboot简介入门配置项目准备02-M ...

  4. 测试用例设计——WEB通用测试用例(转)

    http://qa.blog.163.com/blog/static/190147002201111332029404/

  5. STM32F10X FLASH and SRAM size

    STM32F10X FLASH Size SRAM Size Device Type --------------------------------------------------------- ...

  6. sql 锁类型与锁机制 转

      SQL Server锁类型(SQL)收藏1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁.   2. NOLOCK:不添加共享锁和排它锁,当这个 ...

  7. CDMA,GPRS,3G有什么区别

    1 CDMA: 我们常说的CDMA 是IS-95A CDMA的简称 ,属于第二代通信技术(2G)的一种,属于北美的技术.另一种技术是GSM,属于欧洲的技术.这两种实现的原理不同,各有各的优点: 2 G ...

  8. h264 封装 RTMP中FLV数据的解析 rtmp协议简单解析以及用其发送h264的flv文件

    一个完整的多媒体文件是由音频和视频2部分组成的.H264.Xvid等就是视频编码格式,MP3.AAC等就是音频编码格式.字幕文件只是其中附带部分. 把视频编码和音频编码打包成一个完整的多媒体文件,可以 ...

  9. find命令专辑

    find命令使用技巧 查找文件,移动到某个目录 使用find和xargs 15条 linux Find 命令实际使用方法 find 命令用法 find命令使用经验 find用法小结 find与xarg ...

  10. TortoiseSVN 冲突解决详细步骤 (图)

    冲突还是很好解决的,但我没有试过在IDE里边集成怎样.记得VSS在Visual Studio里边解决冲突就非常完美,冲突自动报告,自动弹出冲突解决窗口,让你处理该怎么合并两份版本.合并后自动签入com ...