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. Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)

    现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机 ...

  2. LCA(最近公共祖先)--tarjan离线算法 hdu 2586

    HDU 2586 How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  3. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance 模拟

    D. Little Artem and Dance 题目连接: http://www.codeforces.com/contest/669/problem/D Description Little A ...

  4. Codeforces Round #303 (Div. 2) A. Toy Cars 水题

     A. Toy Cars Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/545/problem ...

  5. 快速排序及查找第K个大的数。

    本文提供了一种基于分治法思想的,查找第K个大的数,可以使得时间复杂地低于nlogn. 因为快排的平均时间复杂度为nlogn,但是快排是全部序列的排序, 本文查找第k大的数,则不必对整个序列进行排序.请 ...

  6. Ehcache缓存时间设置

    timeToLiveSeconds和timeToIdleSecondstimeToLiveSeconds=x:缓存自创建日期起至失效时的间隔时间x:timeToIdleSeconds=y:缓存创建以后 ...

  7. LT1072 -- Wide-range voltage regulator automatically selects operating mode

    The circuit in Figure 1 delivers programming voltages to an EEPROM under the control of an external ...

  8. Programmable current source requires no power supply

    Engineering labs are usually equipped with various power supplies, voltmeters, function generators, ...

  9. zookeeper选举机制

    在上一篇文章中我们大致浏览了zookeeper的启动过程,并且提到在Zookeeper的启动过程中leader选举是非常重要而且最复杂的一个环节.那么什么是leader选举呢?zookeeper为什么 ...

  10. 由 12306.cn 谈谈高并发+高负载网站性能技术

    12306.cn 网站挂了,被全国人民骂了.我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题.因为仓促,而且完全基于本人有限的经验和了解, 所以,如果有什么问题还请大家一起讨论 ...