今天在读程序源码的过程中到一段这样的代码:

canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG)); 

不太明白,Google了一下,原来是进行:抗锯齿处理的。同时,学习了一下Android绘图中的两种抗锯齿处理方式。

首先要搞明白锯齿是什么?如下图所示,左边为未经过抗锯齿处理的图形,右面为经过抗锯齿处理的图形,明显可以看到,经过抗锯齿处理的图形会显得更加圆滑一些。
这里写图片描述

在Android绘图中同样会出现这个问题,可是为什么会出现锯齿呢?

①当我们用Canvas绘制位图的时候,如果对位图进行了选择,则位图会出现锯齿。

② 在用View的RotateAnimation做动画时候,如果View当中包含有大量的图形,也会出现锯齿。

那么如何来解决呢?只要把握住一点,能通过Paint设置的就用Paint设置,如果不能用Paint设置的就直接给Canvas加上抗锯齿。

解决方案一,通过Paint来设置:

 首先在你的构造函数中,需要创建一个Paint。 Paint mPaint = new Paint(); 然后,您需要设置两个参数: 1) mPaint.setAntiAlias(); 

解决方案二:通过Canvas设置

canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG)); 

总之,解决锯齿的问题:
1、通过Paint设置
2、通过Canvas设置

更多相关文章

  1. Android图形架构分析总结
  2. Android图形显示之本地窗口
  3. android 的图形引擎 skia
  4. Android图形绘制
  5. [转] 移植Android图形引擎Skia到MIPS平台经验总结(一)
  6. 第三部分:Android 应用程序接口指南---第四节:动画和图形---第五章
  7. Android图形子系统
  8. 你应该知道的五个免费的Android最佳图形设计应用
  9. 【译】Android位图颜色模式的问题

随机推荐

  1. 【Android开发教程】一、基础概念
  2. RotateAniamtion_实现Android简单动画旋
  3. Android并发编程之如何使用ReentrantRead
  4. Android EditText的inputType属性值
  5. 【Android 应用开发】Android资源文件 -
  6. Ubuntu 编译Android若干错误及解决方法(
  7. Android 开关控件Switch使用
  8. Android跨进程通信IPC之16——Binder之na
  9. Android OpenGL ES基础教程
  10. Android属性系统之build.prop的生成