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

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

概述绘制圆环其实很简单,有大概以下三种思路.这里先说网上提到的一种方法。思路是先绘制内圆,然后绘制圆环(圆环的宽度就是paint设置的paint.setStrokeWidth的宽度),最后绘制外圆。请看核心源码:复制代码代码如下:& 绘制圆环其实很简单,有大概以下三种思路. 这里先说网上提到的一种方法。思路是先绘制内圆,然后绘制圆环(圆环的宽度就是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; 
 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); //消除锯齿
                this.paint.setStyle(Style.stroke);  //绘制空心圆或 空心矩形
              }
        @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);   //圆环宽度

  // 第一种方法绘制圆环
  //绘制内圆
                this.paint.setARGB(255,138,43,226);
  this.paint.setstrokeWIDth(2);
  canvas.drawCircle(center,center,innerCircle,this.paint);   

                //绘制圆环
               this.paint.setARGB(255,226);
  this.paint.setstrokeWIDth(ringWIDth);
  canvas.drawCircle(center,innerCircle + 1 +ringWIDth/2,this.paint);   

               //绘制外圆 
  this.paint.setARGB(255,innerCircle + ringWIDth,this.paint);    

                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); 
 } 
}
</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上绘制圆环的实现方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1141842.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存