`
rys5851968
  • 浏览: 155702 次
社区版块
存档分类
最新评论

Android开发:在ImageView上绘制圆环

 
阅读更多

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

请看核心源码:

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, 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);  
	} 
}
总结:

1,这种分三次来绘制的方法,可以将圆环的内圆 圆环 和外圆的颜色设成不一样的,对paint进行三次设置。还可以将绘制圆环的paint透明度设成10左右就会有圆环透明的效果。

2,三次绘制时的canvas.drawCircle圆心都是(center,center),但三次半径确实不一样的。尤其是第二次绘制圆环的时候,半径是innerCircle + 1 +ringWidth/2。这里的加1是第一次外圆paint.setStrokeWidth(2);宽度设成2,也就是说单条线的宽度1。后面的ringWidth/2也是同理。

示例如下(底色是预览摄像头的视频):


参考:http://blog.csdn.net/xiangjai/article/details/7727528


分享到:
评论

相关推荐

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

    在Android开发中,有时我们需要在界面上添加一些自定义的图形元素,比如在ImageView上绘制一个圆环。本文将详细讲解如何在ImageView上实现这一功能。我们主要关注三种方法中的第一种,即通过画布(Canvas)进行绘制...

    Android-Android自定义View之几何图形绘制

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特的视图组件。本主题聚焦于“Android自定义View之几何图形绘制”,特别是如何利用Android的Canvas API来构建维度图表,如模仿京东白...

    Android圆环菜单,只有你想不到的,没有做不到的-IT计算机-毕业设计.zip

    在Android开发领域,创新的用户界面设计总是能吸引用户的注意力,而“圆环菜单”就是这样一种独特的交互方式。本文将围绕“Android圆环菜单”这一主题,深入探讨其设计原理、实现方法以及在毕业设计中的应用,帮助你...

    Android可控渐变圆环进度条

    在Android开发中,自定义View是一项常见的任务,用于创建具有独特视觉效果或功能的组件。本项目名为"Android可控渐变圆环进度条",它模仿了小米安全中心的圆环进度条设计,并允许开发者自定义设置百分比和颜色,以...

    Android 自定义圆环动画切换、流式布局的实现.rar

    1. CustomCircleImageView.java:自定义的圆环ImageView类,包含了绘制圆环和实现动画的方法。 2. CustomPagerAdapter.java:可能是一个自定义的PagerAdapter,用于为ViewPager提供数据并处理页面切换。 3. ...

    Android圆环菜单

    2. **绘制圆环**:为了实现视觉上的圆环效果,我们可能需要在自定义ViewGroup的` onDraw()`方法中使用` Canvas`进行绘制。这包括绘制圆环背景、分割线和选中项的高亮效果。可以使用` drawCircle()`和` drawArc()`...

    Android——实现光点模糊渐变的自旋转圆环特效,实现水滴波纹特效源码

    在Android开发中,UI设计是至关重要的一环,它直接影响到用户体验和应用的视觉吸引力。本文将探讨如何在Android中实现两种独特的视觉效果:光点模糊渐变的自旋转圆环特效以及水滴波纹特效。这两种特效能为你的应用...

    自定义的圆环ImageView、ViewPager的动画切换、流式布局

    在Android开发中,创建独特且引人入胜的UI组件是提升用户体验的关键。这个项目涵盖了三个重要的知识点:自定义的圆环ImageView、ViewPager的动画切换以及...掌握这些技能将有助于开发者在Android开发领域更上一层楼。

    android 头像画圆框

    // 在Canvas上绘制圆环 canvas.drawCircle(minSide / 2, minSide / 2, minSide / 2 - ringPaint.getStrokeWidth() / 2, ringPaint); } ``` 以上代码实现了基本的圆框头像功能,但还可以根据需求进一步扩展。例如...

    android 自定义圆形倒计时控件时间递减显示

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本示例中,我们探讨的是如何创建一个特定的圆形倒计时控件,它能够以视觉上吸引人的方式展示时间递减。这个控件可以应用于各种场景,如等待加载...

    Android自定义View-圆环布局

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面。"Android自定义View-圆环布局"是一个专为实现特定视觉效果和交互设计的项目,它包含了圆圈旋转、圆环拖动...

    android 圆环菜单

    在Android开发中,创新的用户界面设计总是能吸引用户的注意力,而“圆环菜单”就是这样一种独特的交互元素。本文将深入探讨如何在Android平台上实现一个可跟随手指拖动的圆环形菜单,以及相关的技术要点。 首先,让...

    Android源码——圆环菜单,只有你想不到的,没有做不到的.zip

    在Android开发中,创新的用户界面设计总是能吸引用户的注意力,而圆环菜单就是这样一种独特且有趣的设计元素。本文将深入探讨如何在Android平台上实现一个圆环菜单,并基于提供的资源"圆环菜单,只有你想不到的,...

    android自定义View实现圆环颜色选择器

    在Android中,View是所有UI控件的基类,包括Button、TextView、ImageView等。通过继承View类,可以实现自定义的UI控件。自定义View需要重写onDraw方法,该方法负责绘制View的内容。 圆环颜色选择器的实现 圆环颜色...

    安卓Android源码——圆环菜单,只有你想不到的,没有做不到的.zip

    这个类将负责绘制圆环以及菜单项。在onDraw()方法中,利用Canvas提供的drawCircle()和drawBitmap()函数,我们可以绘制出基本的圆形结构和菜单图标。同时,需要考虑圆环的半径、颜色、透明度等属性,以便根据需求调整...

    类似很多圆环图片头像

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建具有独特功能和视觉效果的组件。"类似很多圆环图片头像"这个标题暗示我们要讨论的是一种特殊的自定义View,它用于显示带有圆环效果的...

    android-HoloCircularProgressBar-master

    在这个例子中,开发者可能会使用`drawCircle()`来绘制圆环,然后通过调整角度来实现进度的动态变化。 2. 动画:为了实现圆环的旋转效果,开发者可能使用了`ObjectAnimator`或`ValueAnimator`来平滑地改变进度值,并...

    安卓 自定义圆环ProgressBar

    在Android开发中,自定义组件是一项常见的任务,用于实现独特的UI效果以满足用户界面的个性化需求。本案例中,我们关注的是一个特定的自定义组件——"安卓自定义圆环ProgressBar",它是一种视觉上吸引人的进度指示器...

    Android实现动态圆环的图片头像控件

    2. 在onDraw()方法中,除了绘制圆形头像,还需要根据`ringRadius`绘制圆环。 3. 使用Handler发送一个Runnable,该Runnable更新`ringRadius`的值,并调用`postInvalidate()`使View重绘。 4. 设置Runnable的执行间隔,...

Global site tag (gtag.js) - Google Analytics