gpt4 book ai didi

Android开发笔记之:在ImageView上绘制圆环的实现方法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Android开发笔记之:在ImageView上绘制圆环的实现方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

绘制圆环其实很简单,有大概以下三种思路. 这里先说网上提到的一种方法。思路是先绘制内圆,然后绘制圆环(圆环的宽度就是paint设置的paint.setStrokeWidth的宽度),最后绘制外圆。 请看核心源码:

复制代码 代码如下

<SPAN xmlns="http://www.w3.org/1999/xhtml">package yan.guoqi.rectphoto; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.RectF; import android.util.AttributeSet; import android.widget.ImageView; public class DrawImageView extends ImageView {  private final Paint paint;  private final Context context;&nbsp;  public DrawImageView(Context context, AttributeSet attrs) {   super(context, attrs);   // TODO Auto-generated constructor stub   this.context = context;   this.paint = new Paint();   this.paint.setAntiAlias(true); //消除锯齿 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.paint.setStyle(Style.STROKE);  //绘制空心圆或 空心矩形 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override  protected void onDraw(Canvas canvas) {   // TODO Auto-generated method stub   int center = getWidth()/2;   int innerCircle = dip2px(context, 83); //内圆半径   int ringWidth = dip2px(context, 10);   //圆环宽度   // 第一种方法绘制圆环   //绘制内圆 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.paint.setARGB(255, 138, 43, 226);   this.paint.setStrokeWidth(2);   canvas.drawCircle(center, center, innerCircle, this.paint);&nbsp;   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //绘制圆环 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.paint.setARGB(255, 138, 43, 226);   this.paint.setStrokeWidth(ringWidth);   canvas.drawCircle(center, center, innerCircle + 1 +ringWidth/2, this.paint);&nbsp;   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //绘制外圆&nbsp;   this.paint.setARGB(255, 138, 43, 226);   this.paint.setStrokeWidth(2);   canvas.drawCircle(center, center, innerCircle + ringWidth, this.paint);&nbsp;&nbsp;   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.onDraw(canvas);  }  /* 根据手机的分辨率从 dp 的单位 转成为 px(像素) */   public static int dip2px(Context context, float dpValue) {    final float scale = context.getResources().getDisplayMetrics().density;    return (int) (dpValue * scale + 0.5f);   }&nbsp; } </SPAN> 。

总结: 1,这种分三次来绘制的方法,可以将圆环的内圆 圆环 和外圆的颜色设成不一样的,对paint进行三次设置。还可以将绘制圆环的paint透明度设成10左右就会有圆环透明的效果。 2,三次绘制时的canvas.drawCircle圆心都是(center,center),但三次半径确实不一样的。尤其是第二次绘制圆环的时候,半径是innerCircle + 1 +ringWidth/2。这里的加1是第一次外圆paint.setStrokeWidth(2);宽度设成2,也就是说单条线的宽度1。后面的ringWidth/2也是同理。 示例如下(底色是预览摄像头的视频):

最后此篇关于Android开发笔记之:在ImageView上绘制圆环的实现方法的文章就讲到这里了,如果你想了解更多关于Android开发笔记之:在ImageView上绘制圆环的实现方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com