Android画图之抗锯齿paint和Canvas两种方式实例

 更新时间:2017年04月13日 15:33:26   作者:安儿IT  
本篇文章主要介绍了Android画图之抗锯齿paint和Canvas两种方式实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿。其实Android自带了解决方式。

方法一:给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。

paint.setAntiAlias(true); 

方法二:给Canvas加上抗锯齿标志。

有些地方不能用paint的,就直接给canvas加抗锯齿,更方便。

复制代码 代码如下:

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

eg:

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Matrix; 
import android.graphics.Paint; 
import android.graphics.PaintFlagsDrawFilter; 
import android.view.View; 

public class MyView extends View { 
  private PaintFlagsDrawFilter pfd; 
  private Paint mPaint = new Paint(); 
  private Matrix matrix = new Matrix();; 
  private Bitmap bmp; 

  public MyView(Context context) { 
    super(context); 
    initialize(); 
  } 

  private void initialize() { 
    pfd = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);    
    mPaint.setAntiAlias(true); 
    matrix.setRotate(30); 
    matrix.postScale(0.5f, 0.5f); 
    bmp = BitmapFactory.decodeResource(getResources(), R.drawable.show); 
  } 

  @Override 
  public void dispatchDraw(Canvas canvas) { 
    canvas.translate(100, 0); 
    canvas.drawBitmap(bmp, matrix, null); 
    canvas.translate(0, 250); 
    canvas.drawBitmap(bmp, matrix, mPaint); 
    canvas.setDrawFilter(pfd); 
    canvas.translate(0, 250); 
    canvas.drawBitmap(bmp, matrix, null); 
  } 
} 

下图是效果:

可以看出,两种方式都挺有效的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android中Toolbar随着ScrollView滑动透明度渐变效果实现

    Android中Toolbar随着ScrollView滑动透明度渐变效果实现

    这篇文章主要介绍了Android中Toolbar随着ScrollView滑动透明度渐变效果实现,非常不错,具有参考借鉴价值,需要的的朋友参考下
    2017-01-01
  • 总结Android App内存优化之图片优化

    总结Android App内存优化之图片优化

    网上有很多大拿分享的关于Android性能优化的文章,主要是通过各种工具分析,使用合理的技巧优化APP的体验,提升APP的流畅度,但关于内存优化的文章很少有看到。下面是我在实践过程中使用的一些方法,很多都是不太成熟的项目,只是将其作为一种处理方式分享给大家。
    2016-08-08
  • Android编程实现禁止系统锁屏与解锁亮屏的方法

    Android编程实现禁止系统锁屏与解锁亮屏的方法

    这篇文章主要介绍了Android编程实现禁止系统锁屏与解锁亮屏的方法,实例分析了Android关闭屏幕、锁屏及解锁屏幕的相关技巧,需要的朋友可以参考下
    2015-12-12
  • Android实现进度条(ProgressBar)的功能与用法

    Android实现进度条(ProgressBar)的功能与用法

    这篇文章主要为大家详细介绍了Android实现进度条(ProgressBar)的功能与用法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Android如何通过命令行操作Sqlite3数据库的方法

    Android如何通过命令行操作Sqlite3数据库的方法

    这篇文章主要介绍了Android如何通过命令行操作Sqlite3数据库的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Android获取手机联系人列表的方法

    Android获取手机联系人列表的方法

    这篇文章主要为大家详细介绍了Android获取手机联系人列表的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • android TextView属性的详细介绍 分享

    android TextView属性的详细介绍 分享

    android TextView属性的详细介绍 分享,需要的朋友可以参考一下
    2013-05-05
  • 安卓(android)怎么实现下拉刷新

    安卓(android)怎么实现下拉刷新

    这里我们将采取的方案是使用组合View的方式,先自定义一个布局继承自LinearLayout,然后在这个布局中加入下拉头和ListView这两个子元素,并让这两个子元素纵向排列。对安卓(android)怎么实现下拉刷新的相关知识感兴趣的朋友一起学习吧
    2016-04-04
  • Android星级评分条的实现代码

    Android星级评分条的实现代码

    这篇文章主要为大家详细介绍了Android星级评分条的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • android现有项目轻微改动适配平板心得

    android现有项目轻微改动适配平板心得

    这篇文章主要介绍了android现有项目轻微改动适配平板心得,对android适配感兴趣的同学可以参考下
    2021-04-04

最新评论