在View对象上绘图

如果应用程序不需要大量的图形处理或很高的帧速率(如一个棋类游戏、Snake游戏或另外的慢动画类应用程序),那么就应该考虑创建一个定制的View组件,并且用该组件的View.onDraw()方法的Canvas参数来进行图形绘制。这么做最大的方便是,Android框架会提供一个预定义的Canvas对象,该对象用来放置绘制图形的调用。

从继承View类(或其子类)开始,并定义onDraw()回调方法。系统会调用该方法来完成View对象自己的绘制请求。这也是通过Canvas对象来执行所有的图形绘制调用的地方,这个Canvas对象是由onDraw()回调方法传入的。

Android框架只在必要的时候才会调用onDraw()方法,每次请求应用程序准备完成图形绘制任务时,必须通过调用invalidate()方法让该View对象失效。这表明可以在该View对象上进行图形绘制处理了,然后Android系统会调用该View对象的onDraw()方(尽管不保证该回调方法会立即被调用)。

在定制的View组件的onDraw()方法内部,使用给定的Canvas对象来完成所有的图形绘制处理(如Canvas.draw…()方法或把该Canvas对象作为参数传递给其他类的draw()方法)。一旦onDraw()方法被执行完成,Android框架就会使用这个Canvas对象来绘制一个有系统处理的Bitmap对象。

注意:为了在一个线程中而不是主Activity的线程中发出一个失效请求,必须调用postInvalidate()。

http://blog.csdn.net/fireofstar/article/details/7643892

Android Canvas 图形绘制相关推荐

  1. 自定义控件之Canvas图形绘制基础练习-青春痘笑脸^_^

    对于自定义控件的意义不言而喻,所以对它的深入研究是很有必要的,前些年写过几篇关于UI效果的学习过程,但是中途比较懒一直就停滞了,而对于实际工作还是面试来说系统深入的了解自定义控件那是很有必要的,所以接 ...

  2. canvas图形绘制

    前面的话 前面分别介绍了canvas的基础用法和进阶用法,本文将使用canvas的各种语法进行图形绘制 绘制线条 [绘制线条] 下面来尝试绘制一段线条 <canvas id="draw ...

  3. 小强的HTML5移动开发之路(6)——Canvas图形绘制基础

    在前面提到Canvas是HTML5中一个重要特点,canvas功能非常强大,用photoshop可以实现的效果canvas也同样可以实现,下面我们用canvas实现基本图形的绘制. 一.Canvas标 ...

  4. android字体图形绘制,android paint api drawText 绘制字体字形

    android paint 的里面有很多属性设置的方法,我们来了解一下: Paint paint = new Paint(); // 设置字体颜色 paint.setColor(Color.RED); ...

  5. android canvas光晕绘制_android用canvas绘制两种波纹效果

    波形效果有几种不同的呈现形式,比如从中间向四周散开的波形,也就是熟知的水涟漪:还有上下波动的曲线,像五线谱等.英文中可以称作Wave或者Ripple,所以暂且叫它们WaveView.WaveLayou ...

  6. android canvas光晕绘制_Android 绘制发光效果

    之前在看别人写自定义view作绘制的时候,看到别人家的view自带发光效果,看起来也是蛮炫酷的,于是自己也抽出时间来试用一下,这里做了一个模仿太阳的各种状态样式. 先上效果先上效果: 实现方式: pu ...

  7. android canvas光晕绘制_为ImageView增加iphone式的光晕效果

    iphone的按钮默认按下都带了光晕效果,其实android也很容易实现.只需要在按下的时候贴图即可. * Xiaoyuan at 2012-4-25 import android.content.C ...

  8. Android Canvas.drawRect绘制矩形

    Android30 canvas.drawRect方法 public void drawRect(float left, float top, float right, float bottom, @ ...

  9. android canvas光晕绘制_Unity实现UI光晕效果(发光效果)

    unity中,我们怎么制作ui物体发光的渐隐渐现的效果呢? 比如说我们有一张月亮光晕的精灵图片 我们可以给它添加一个canvasgroup组件 我们可以发现,组件上的alpha值可以控制图片的透明度, ...

最新文章

  1. 树状数组的理解(前缀和 and 差分)
  2. 2013多校训练赛第三场 总结
  3. 电子工程师需要了解的SMT贴片质量问题汇总(转)
  4. H5中canvas和svg绘图方式介绍
  5. UML学习笔记(4)——类图之间的关系
  6. 《数据库SQL实战》找出所有员工当前薪水salary情况
  7. Redhat Enterprise Linux 5 实战系列(六)为RHEL5开启samba
  8. 【计蒜客 - 蓝桥训练】修建公路(贪心,或运算,dp)
  9. Oracle11g新特性:在线操作功能增强-Oracle对象依赖性判断增强 (转载)
  10. securecrt遇到一个致命的错误且必须关闭_淄博plc维修西门子plcs7-200致命错误7强制数据永久存储区错误...
  11. 性能测试工具_K6性能测试工具的使用入门
  12. 谷歌和ESRI眼中的Web Mercator
  13. NonComVisibleBaseClass Exception
  14. 错误及原因:Empty JPEG image (DNL not supported)
  15. 使用create-keyframe-animation实现js动画
  16. QTP(Quick Test Professional)安装详细教程
  17. Programming Languages PartB Week1学习笔记——Racket纯函数式编程语言
  18. Win10以太网没有有效的IP配置解决方法
  19. 遥感(4):卫星遥感图像处理
  20. 2023北京物资学院计算机考研信息汇总

热门文章

  1. python 让异常名称显示出来
  2. zoj How Many Shortest Path
  3. Laravel 校验规则之字段值唯一性校验
  4. Vs 控件错位 右侧资源管理器文件夹点击也不管用,显示异常
  5. UIImage指定区域自由拉伸
  6. SQL中EXISTS的用法(转)
  7. TcpSocket编程与Event编写学习的好例子
  8. ASP.NET MVC 3.0学习系列文章--Razor and ASP.NET MVC 3.0
  9. requireJS对文件合并与压缩(二)
  10. 魔兽世界---屠夫(Just a Hook)