亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

自定義控件實戰<三> 動態圓弧控件.

2019-11-06 10:03:53
字體:
來源:轉載
供稿:網友

上一篇文章實現一個圖片和文字混合展示的控件,這篇文章在此基礎上面繼續實現一個動態的圓弧控件.

一、在attrs.xml中添加自定義屬性:

<?xml version="1.0" encoding="utf-8"?><resources> <attr name="firstColor" format="color" /> <attr name="secondColor" format="color" /> <attr name="circleLength" format="dimension" /> <attr name="circleWidth" format="dimension" /> <attr name="speed" format="integer" /> <declare-styleable name="Custom二、對應的布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal" tools:context="com.shi.androidstudio.brokenline.MainActivity"> <com.shi.androidstudio.brokenline.SimpleView_03 android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" app:firstColor = "@color/colorAccent" app:secondColor = "@color/colorPrimaryDark" app:speed = "20" app:circleLength = "100dp" app:circleWidth = "20dp" /></LinearLayout>

三、重寫SimpleView_03控件的構造函數:

public SimpleView_03(Context context) { this(context, null); } public SimpleView_03(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SimpleView_03(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); /** * 獲得我們所定義的自定義樣式屬性 */ TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CustomProgressBar, defStyleAttr, 0); int length = a.getIndexCount(); for (int i = 0; i < length; i++) { int attr = a.getIndex(i); switch (attr) { case R.styleable.CustomProgressBar_firstColor: mFirstColor = a.getColor(attr,Color.BLACK); break; case R.styleable.CustomProgressBar_secondColor: mSecondColor = a.getColor(attr,Color.WHITE); break; case R.styleable.CustomProgressBar_circleLength: mCircleLength = a.getDimension(attr, 50.00f); break; case R.styleable.CustomProgressBar_circleWidth: mCircleWidth = a.getDimension(attr, 20.00f); break; case R.styleable.CustomProgressBar_speed: mSpeed = a.getInt(attr,10); break; } } a.recycle(); new Thread(new Runnable() { @Override public void run() { while (true) { mProgress = mProgress % 360; postInvalidate(); mProgress++; if (mProgress == 360) { isNext = !isNext; } SystemClock.sleep(mSpeed); } } }).start(); }

四、重寫SimpleView_03控件的onDraw:

@Override protected void onDraw(Canvas canvas) { Paint mPaint_01 = new Paint(); mPaint_01.setAntiAlias(true); //設置畫筆為無鋸齒 mPaint_01.setColor(mFirstColor); //設置畫筆顏色 canvas.drawColor(Color.WHITE); //白色背景 mPaint_01.setStrokeWidth(mCircleWidth); //線寬 mPaint_01.setStyle(Paint.Style.STROKE); int centerX = getMeasuredWidth()/2; int centerY = getMeasuredHeight()/2; RectF oval = new RectF(); //RectF對象 oval.left = centerX - mCircleLength; //左邊 oval.top = centerY - mCircleLength; //上邊 oval.right = centerX + mCircleLength; //右邊 oval.bottom = centerY + mCircleLength; //下邊 Paint mPaint_02 = new Paint(); mPaint_02.setAntiAlias(true); //設置畫筆為無鋸齒 mPaint_02.setColor(mSecondColor); //設置畫筆顏色 canvas.drawColor(Color.WHITE); //白色背景 mPaint_02.setStrokeWidth(mCircleWidth); //線寬 mPaint_02.setStyle(Paint.Style.STROKE); if(!isNext){ canvas.drawCircle(centerX,centerY,mCircleLength,mPaint_01); canvas.drawArc(oval, 0, mProgress, false, mPaint_02); //繪制圓弧 }else{ canvas.drawCircle(centerX,centerY,mCircleLength,mPaint_02); canvas.drawArc(oval, 0, mProgress, false, mPaint_01); //繪制圓弧 } }

這里講解一下drawCircle和drawArc函數:

drawCircle(float cx, float cy, float radius, Paint paint)官方解釋:Draw the specified circle using the specified paint.使用指定的畫筆繪制一個指定的圓,其中cx,cy為圓的圓心,radius為圓的半徑,paint為畫筆. drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)官方解釋:Draw the specified arc, which will be scaled to fit inside the specified oval.使用指定的畫筆繪制一個指定圓弧,其中oval為圓弧所在的橢圓對象;系統默認在當前頁面建立一個X軸向右,Y軸向下的坐標系,其中的startAngle為圓弧的起始角度,sweepAngle為圓弧的角度,useCenter表示是否顯示半徑連線,為true則顯示圓弧與圓心的半徑連線,false不顯示,paint為畫筆.

五、效果圖:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品成久久久久三级| 欧美裸体男粗大视频在线观看| 日韩午夜在线视频| 亚洲激情在线观看视频免费| 亚洲精品久久久久久久久久久| 精品久久久久久久久久久久| 一区二区国产精品视频| 国产精品视频一区国模私拍| 国产91网红主播在线观看| 亚洲美女喷白浆| 成人做爽爽免费视频| 亚洲成**性毛茸茸| 国产成人亚洲综合| 亚洲欧洲在线播放| 清纯唯美亚洲激情| 自拍视频国产精品| 精品中文字幕久久久久久| 国产精品av网站| 97激碰免费视频| 国产高清视频一区三区| 精品在线观看国产| 欧美国产在线视频| 亚洲女成人图区| 国产综合视频在线观看| 欧美在线免费看| 色狠狠久久aa北条麻妃| 亚洲国产91精品在线观看| 欧美国产精品日韩| 欧美亚洲另类制服自拍| 国产精品女人网站| 日本sm极度另类视频| 正在播放欧美一区| 欧美电影在线播放| 欧美日韩国产成人| 中国日韩欧美久久久久久久久| 亚洲一区亚洲二区亚洲三区| 国产精品成人一区二区三区吃奶| 亚洲美女www午夜| 亚洲自拍欧美另类| 视频在线观看99| 福利一区视频在线观看| 欧美裸身视频免费观看| 欧美中文字幕在线播放| 久久精品国产2020观看福利| 欧美日韩国产丝袜另类| 欧美一区二区大胆人体摄影专业网站| 国产午夜精品免费一区二区三区| 日韩在线欧美在线| 一本色道久久88精品综合| 国产激情久久久久| 亚洲国产精品人人爽夜夜爽| 97av在线影院| 自拍亚洲一区欧美另类| 欧美成人免费网| 欧美大片免费观看| 久久影视电视剧免费网站清宫辞电视| 97视频在线观看免费高清完整版在线观看| 亚洲一区精品电影| 日韩av综合中文字幕| 亚洲老板91色精品久久| 欧美性理论片在线观看片免费| 日本高清不卡的在线| 亚洲韩国欧洲国产日产av| 91精品国产综合久久香蕉| 日韩精品在线免费观看视频| 亚洲片在线观看| 精品国模在线视频| 97视频网站入口| 久久精品国产亚洲一区二区| 久久频这里精品99香蕉| 97热在线精品视频在线观看| 日韩激情第一页| 国产精品成人一区二区| 国产成人亚洲综合91精品| 亚洲欧洲成视频免费观看| 日韩精品在线观看网站| 91精品国产99久久久久久| 亚洲第一区在线观看| 操人视频在线观看欧美| 久久久久久国产精品三级玉女聊斋| 高清在线视频日韩欧美| 欧美性猛交xxxx久久久| 亚洲国产精品中文| 国产精品香蕉国产| 国产日韩av在线播放| 精品女同一区二区三区在线播放| 日韩av手机在线看| 欧美黄色小视频| 欧美精品手机在线| 国产日韩中文字幕在线| 成人免费观看49www在线观看| 久久999免费视频| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲精品99999| 国产日韩精品入口| 亚洲天堂男人天堂女人天堂| 亚洲色在线视频| 成人激情视频在线观看| 日韩欧美中文字幕在线播放| 成人有码在线播放| 精品国产999| 国产成人精品网站| 精品福利视频导航| 亚洲一区中文字幕在线观看| 久久久亚洲影院| 欧美日韩精品在线| 亚洲图片在线综合| 96pao国产成视频永久免费| 亚洲精品国产综合区久久久久久久| 日韩激情av在线免费观看| 俺去啦;欧美日韩| 亚洲综合精品伊人久久| 精品国产一区二区三区久久狼5月| 国产日韩中文字幕在线| 国产成人综合精品在线| 亚洲成人精品视频| 国产精品三级久久久久久电影| 亚洲在线www| 欧美黑人又粗大| 国产精品久久久久999| 国产精品一区二区久久国产| 亚洲国产精品系列| 中文字幕日本欧美| 欧美国产亚洲精品久久久8v| 欧美激情小视频| 78m国产成人精品视频| 91热精品视频| 日韩av一卡二卡| 久久亚洲欧美日韩精品专区| 欧美最猛性xxxxx免费| 久久精品美女视频网站| 成人福利网站在线观看| 亚洲欧美一区二区精品久久久| 欧美性视频在线| 在线国产精品视频| 久久成人一区二区| 欧美日韩亚洲91| 美女撒尿一区二区三区| 欧美日韩激情视频| 亚洲国产另类久久精品| 精品久久在线播放| 欧美性xxxx极品hd欧美风情| 日韩精品一二三四区| 美日韩精品免费视频| 欧美日韩国产丝袜美女| 久久久久久综合网天天| 亚洲另类激情图| 亚洲人成网站999久久久综合| 神马久久久久久| 欧美怡红院视频一区二区三区| 亚洲午夜久久久久久久| 九九热精品视频国产| 国产香蕉97碰碰久久人人| 亚洲精品天天看| 51精品在线观看| 欧美福利在线观看| 亚洲国产欧美一区| 亚洲成人激情在线观看| 久久亚洲欧美日韩精品专区| 97视频网站入口| 久久99热精品这里久久精品| 日韩精品免费综合视频在线播放| 欧美大片免费观看在线观看网站推荐| 欧美高清性猛交|