Android开发:在ImageView下绘制圆环
来源:互联网 发布:打印机共享设置软件 编辑:程序博客网 时间:2024/06/05 17:28
绘制圆环其实很简单,有大概以下三种思路. 这里先说网上提到的一种方法。思路是先绘制内圆,然后绘制圆环(圆环的宽度就是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 stubthis.context = context;this.paint = new Paint();this.paint.setAntiAlias(true); //消除锯齿 this.paint.setStyle(Style.STROKE); //绘制空心圆或 空心矩形 } @Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubint 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, 138, 43, 226);this.paint.setStrokeWidth(ringWidth);canvas.drawCircle(center, center, innerCircle + 1 +ringWidth/2, this.paint); //绘制外圆 this.paint.setARGB(255, 138, 43, 226);this.paint.setStrokeWidth(2);canvas.drawCircle(center, center, 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也是同理
0 0
- Android开发:在ImageView下绘制圆环
- Android开发:在ImageView上绘制圆环
- Android开发:ImageView上绘制旋转圆环(透明度不同的旋转圆环,利用canvas.drawArc实现)
- Android开发:ImageView上绘制旋转圆环(透明度不同的旋转圆环,利用canvas.drawArc实现)
- Android开发:Invalidate和postInvalidate刷新View的区别及应用-----ImageView绘制旋转圆环(二)
- Android自定义View --- 绘制圆环
- Android 绘制百分比圆环进度条
- ImageView上绘制旋转圆环(透明度不同的旋转圆环,利用canvas.drawArc实现) .
- 绘制圆环
- android绘制圆形、圆角、圆环图片
- android--笔记--自定义View绘制圆环
- 【android】绘制圆环的三种方式
- 【android】绘制圆环的三种方式
- 【android】绘制圆环的三种方式
- android--ImageView绘制开关按钮
- android 绘制圆形的ImageView
- ImageView 圆环旋转
- Android圆环形自定义进度条控件的绘制
- Web.XML 配置详解
- 基于Android/机顶盒/pc高质量视频通话及手机直播源码转让
- VMware中安装系统提示没有可用的映像(No image available)
- CABasicAnimation animationWithKeyPath 一些规定的值
- 成功一次吧!
- Android开发:在ImageView下绘制圆环
- 2002 计算球体积
- 传统SP业务运营数据分析系统填坑记
- HDU 1255 - 覆盖的面积 (线段树 扫描线 面积交)
- 用P3P header解决iframe跨域访问cookie(转) Iframe session失效
- 程序员生存定律--使人生永动的势能
- C语言中内存堆和栈的区别
- 关于<taglib>的uri的一点总结
- 2003 求绝对值