a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 系統(tǒng) > Android > 正文

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

2020-04-11 12:19:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
繪制圓環(huán)其實(shí)很簡(jiǎn)單,有大概以下三種思路. 這里先說(shuō)網(wǎng)上提到的一種方法。思路是先繪制內(nèi)圓,然后繪制圓環(huán)(圓環(huán)的寬度就是paint設(shè)置的paint.setStrokeWidth的寬度),最后繪制外圓。
請(qǐng)看核心源碼:
復(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; 
 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); //內(nèi)圓半徑
  int ringWidth = dip2px(context, 10);   //圓環(huán)寬度

  // 第一種方法繪制圓環(huán)
  //繪制內(nèi)圓
                this.paint.setARGB(255, 138, 43, 226);
  this.paint.setStrokeWidth(2);
  canvas.drawCircle(center, center, innerCircle, this.paint);   

                //繪制圓環(huán)
               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);

 }
 /* 根據(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); 
 } 
}
</SPAN>

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



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 色吊丝在线永久观看最新版本 | 成人网18免费网站 | 亚洲免费视频网站 | 国产亚洲综合视频 | 精品久久久久久国产 | 日本a黄| 五月综合久久 | 欧美一区二区在线观看 | 在线观看免费视频亚洲 | 亚洲一级淫片 | 韩日精品| 四虎影院在线 | 日本www高清 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 美女天堂 | 久久久久久一区二区 | 久久久久久久久久久成人 | 视频一区二区三区在线观看 | 国产女爽123视频.cno | 中文精品久久久 | 国产高清精品一区 | 黄色日批视频 | 一区二区av | 欧美成人a∨高清免费观看 久久精品在线 | 国产精品久久久久久亚洲调教 | 国产91九色一区二区三区 | 国产在线观看91一区二区三区 | 精品1区| 一区二区三区四区av | 国产精品久久久久久久竹霞 | 日韩欧美中文在线 | 日韩欧美在线视频 | 99久久久无码国产精品 | 美国一级黄色片 | 国产精品久久久精品 | 亚洲黄色精品 | 亚洲蜜桃精久久久久久久 | 久久国产香蕉视频 | 三区在线| 亚洲 欧美日韩 国产 中文 | 国产精品一区二区三区在线 |