欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開發(fā)筆記之:在ImageView上繪制圓環(huán)的實(shí)現(xiàn)方法

 更新時間:2013年05月28日 10:25:15   作者:  
本篇文章是對Android中在ImageView上繪制圓環(huán)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
繪制圓環(huán)其實(shí)很簡單,有大概以下三種思路. 這里先說網(wǎng)上提到的一種方法。思路是先繪制內(nèi)圓,然后繪制圓環(huán)(圓環(huán)的寬度就是paint設(shè)置的paint.setStrokeWidth的寬度),最后繪制外圓。
請看核心源碼:
復(fù)制代碼 代碼如下:

<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); //內(nèi)圓半徑
  int ringWidth = dip2px(context, 10);   //圓環(huán)寬度

  // 第一種方法繪制圓環(huán)
  //繪制內(nèi)圓
&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; //繪制圓環(huán)
&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);

 }
 /* 根據(jù)手機(jī)的分辨率從 dp 的單位 轉(zhuǎn)成為 px(像素) */ 
 public static int dip2px(Context context, float dpValue) { 
  final float scale = context.getResources().getDisplayMetrics().density; 
  return (int) (dpValue * scale + 0.5f); 
 }&nbsp;
}
</SPAN>

總結(jié):
1,這種分三次來繪制的方法,可以將圓環(huán)的內(nèi)圓 圓環(huán) 和外圓的顏色設(shè)成不一樣的,對paint進(jìn)行三次設(shè)置。還可以將繪制圓環(huán)的paint透明度設(shè)成10左右就會有圓環(huán)透明的效果。
2,三次繪制時的canvas.drawCircle圓心都是(center,center),但三次半徑確實(shí)不一樣的。尤其是第二次繪制圓環(huán)的時候,半徑是innerCircle + 1 +ringWidth/2。這里的加1是第一次外圓paint.setStrokeWidth(2);寬度設(shè)成2,也就是說單條線的寬度1。后面的ringWidth/2也是同理。
示例如下(底色是預(yù)覽攝像頭的視頻):



相關(guān)文章

最新評論