Android开发如何使用自定义视图将圆角矩形绘制在画布上的方法

  介绍

这篇文章主要介绍了Android开发如何使用自定义视图将圆角矩形绘制在画布上的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

Android开发使用自定义视图将圆角矩形绘制在画布上的方法,具体如下:

前几天,公司一个项目中,头像图片需要添加圆角,这样UI效果会更好看,于是写了一个小的演示进行圆角的定义,该处主要是使用BitmapShader进行了渲染(如果要将一张图片裁剪成椭圆或圆形显示在屏幕上,也可以使用BitmapShader来完成)。

BitmapShader类完成渲染图片的基本步骤如下:

1,创建BitmapShader类的对象

,/* *   ,,*,Call 却;能够用create  a  new  shader  that  will  draw  with  a 位图。   ,,*   ,,*,@param  bitmap ,,,,,, bitmap 用use  inside 从而材质   ,,*,@param  tileX ,,,,,,, tiling  mode  for  x 用draw 从而bitmap 在。   ,,*,@param  tileY ,,,,,,, tiling  mode  for  y 用draw 从而bitmap 在。   ,,*/public 才能;BitmapShader (Bitmap ,位图,TileMode  tileX,, TileMode 泰利),{   ……   }

其中,Shader.TitleMode类型有三种,CALMP,镜子,重复

CALMP:使用边界颜色来填充剩余空间
镜子:使用镜像方式
重复:使用重复方式

2,通过油漆的<代码> setShader (bitmapShafer) 来设置画笔

3,使用已经<代码> setShader (bitmapShafer) 的画笔来绘制图形

<强>下面展示绘制圆角图片的演示

1,自定义RounderCornerImageView。java类

package  com.example.test;   import  android.content.Context;   import  android.graphics.Bitmap;   import  android.graphics.BitmapShader;   import  android.graphics.Canvas;   import  android.graphics.Matrix;   import  android.graphics.Paint;   import  android.graphics.RectF;   import  android.graphics.Shader;   import  android.util.AttributeSet;   import  android.view.View;   public  class  RounderCornerImageView  extends  View  {   private 才能;Bitmap  mImage;//source 位图   private 才能;Paint  mBitmapPaint;//油漆   private 才能;RectF  mBrounds;//矩形   private 才能;float  mRadius f=20.0;//public 才能RounderCornerImageView (Context 上下文),{   ,,,这(上下文,null);   ,,}   public 才能;RounderCornerImageView (Context 上下文,AttributeSet  attrs), {   ,,,(上下文,attrs,, 0);   ,,}   public 才能;RounderCornerImageView (Context 上下文,AttributeSet  attrs,   ,,,,,int  defStyleAttr), {   ,,,超级(上下文,attrs, defStyleAttr);   ,,,init ();   ,,}   private 才能;void  init (), {   ,,,mBitmapPaint=new 油漆(Paint.ANTI_ALIAS_FLAG);   ,,,mBrounds=new  RectF ();   ,,}   @Override才能   protected 才能;void  onMeasure (int  widthMeasureSpec, int  heightMeasureSpec), {   ,,,//,TODO  Auto-generated  method 存根   ,,,int 高度,宽度;   ,,,高度宽度==0;   ,,,//obtain  bitmap 大小   ,,,int  imageHeight, imageWidth;   ,,,if (零!=mImage), {   ,,,,,imageHeight=imageWidth=0;   ,,,}   ,,,{   ,,,,,imageHeight=mImage.getHeight ();   ,,,,,imageWidth=mImage.getWidth ();   ,,,}   ,,,//obtain  best  measure  data 以及set 提醒视图   ,,,宽度=getMeasurement (widthMeasureSpec imageWidth);   ,,,身高=getMeasurement (imageHeight heightMeasureSpec也);   ,,,//set  View  last 大小   ,,,setMeasuredDimension(宽度,高度);   ,,}   ,/* *   ,,*,measure  width 以及height  by  specMode   ,,* */private 才能;int  getMeasurement (int  measureSpec, int  contentSize), {   ,,,int  specSize=MeasureSpec.getSize (measureSpec);   ,,,switch  (MeasureSpec.getMode (measureSpec)), {   ,,,case  MeasureSpec.AT_MOST:   ,,,,,return  Math.min (contentSize specSize也);   ,,,case  MeasureSpec.UNSPECIFIED:   ,,,,,return  contentSize;   ,,,case  MeasureSpec.EXACTLY:   ,,,,,return  specSize;   ,,,默认值:   ,,,,,return  0;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android开发如何使用自定义视图将圆角矩形绘制在画布上的方法