Android開發筆記之:在ImageView上繪製圓環的實現方法

來源:互聯網
上載者:User

繪製圓環其實很簡單,有大概以下三種思路. 這裡先說網上提到的一種方法。思路是先繪製內圓,然後繪製圓環(圓環的寬度就是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, 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也是同理。
樣本如下(底色是預覽網路攝影機的視頻):


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.