最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android自定義漂亮的圓形進(jìn)度條

 更新時(shí)間:2017年01月13日 14:17:50   作者:一葉飄舟  
這篇文章主要介紹了Android自定義漂亮的圓形進(jìn)度條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

這幾天對(duì)Android中實(shí)現(xiàn)畫(huà)圓弧及圓弧效果中所實(shí)現(xiàn)的效果進(jìn)行了修改,改為進(jìn)度圓心進(jìn)度條,效果如圖所示

TasksCompletedView.java 代碼如下

import android.content.Context; 
import android.content.res.TypedArray; 
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.graphics.RectF; 
import android.graphics.Paint.FontMetrics; 
import android.util.AttributeSet; 
import android.view.View; 
 
import com.snailws.taskscompleted.R; 
 
/** 
* @author naiyu(http://snailws.com) 
* @version 1.0 
*/ 
public class TasksCompletedView extends View { 
 
    // 畫(huà)實(shí)心圓的畫(huà)筆 
    private Paint mCirclePaint; 
    // 畫(huà)圓環(huán)的畫(huà)筆 
    private Paint mRingPaint; 
    // 畫(huà)字體的畫(huà)筆 
    private Paint mTextPaint; 
    // 圓形顏色 
    private int mCircleColor; 
    // 圓環(huán)顏色 
    private int mRingColor; 
    // 半徑 
    private float mRadius; 
    // 圓環(huán)半徑 
    private float mRingRadius; 
    // 圓環(huán)寬度 
    private float mStrokeWidth; 
    // 圓心x坐標(biāo) 
    private int mXCenter; 
    // 圓心y坐標(biāo) 
    private int mYCenter; 
    // 字的長(zhǎng)度 
    private float mTxtWidth; 
    // 字的高度 
    private float mTxtHeight; 
    // 總進(jìn)度 
    private int mTotalProgress = 100; 
    // 當(dāng)前進(jìn)度 
    private int mProgress; 
 
    public TasksCompletedView(Context context, AttributeSet attrs) { 
        super(context, attrs); 
        // 獲取自定義的屬性 
        initAttrs(context, attrs); 
        initVariable(); 
    } 
 
    private void initAttrs(Context context, AttributeSet attrs) { 
        TypedArray typeArray = context.getTheme().obtainStyledAttributes(attrs, 
                R.styleable.TasksCompletedView, 0, 0); 
        mRadius = typeArray.getDimension(R.styleable.TasksCompletedView_radius, 80); 
        mStrokeWidth = typeArray.getDimension(R.styleable.TasksCompletedView_strokeWidth, 10); 
        mCircleColor = typeArray.getColor(R.styleable.TasksCompletedView_circleColor, 0xFFFFFFFF); 
        mRingColor = typeArray.getColor(R.styleable.TasksCompletedView_ringColor, 0xFFFFFFFF); 
         
        mRingRadius = mRadius + mStrokeWidth / 2; 
    } 
 
    private void initVariable() { 
        mCirclePaint = new Paint(); 
        mCirclePaint.setAntiAlias(true); 
        mCirclePaint.setColor(mCircleColor); 
        mCirclePaint.setStyle(Paint.Style.FILL); 
         
        mRingPaint = new Paint(); 
        mRingPaint.setAntiAlias(true); 
        mRingPaint.setColor(mRingColor); 
        mRingPaint.setStyle(Paint.Style.STROKE); 
        mRingPaint.setStrokeWidth(mStrokeWidth); 
         
        mTextPaint = new Paint(); 
        mTextPaint.setAntiAlias(true); 
        mTextPaint.setStyle(Paint.Style.FILL); 
        mTextPaint.setARGB(255, 255, 255, 255); 
        mTextPaint.setTextSize(mRadius / 2); 
         
        FontMetrics fm = mTextPaint.getFontMetrics(); 
        mTxtHeight = (int) Math.ceil(fm.descent - fm.ascent); 
         
    } 
 
    @Override 
    protected void onDraw(Canvas canvas) { 
 
        mXCenter = getWidth() / 2; 
        mYCenter = getHeight() / 2; 
         
        canvas.drawCircle(mXCenter, mYCenter, mRadius, mCirclePaint); 
         
        if (mProgress > 0 ) { 
            RectF oval = new RectF(); 
            oval.left = (mXCenter - mRingRadius); 
            oval.top = (mYCenter - mRingRadius); 
            oval.right = mRingRadius * 2 + (mXCenter - mRingRadius); 
            oval.bottom = mRingRadius * 2 + (mYCenter - mRingRadius); 
            canvas.drawArc(oval, -90, ((float)mProgress / mTotalProgress) * 360, false, mRingPaint); // 
//            canvas.drawCircle(mXCenter, mYCenter, mRadius + mStrokeWidth / 2, mRingPaint); 
            String txt = mProgress + "%"; 
            mTxtWidth = mTextPaint.measureText(txt, 0, txt.length()); 
            canvas.drawText(txt, mXCenter - mTxtWidth / 2, mYCenter + mTxtHeight / 4, mTextPaint); 
        } 
    } 
     
    public void setProgress(int progress) { 
        mProgress = progress; 
//        invalidate(); 
        postInvalidate(); 
    } 
 
} 

attrs.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
   
  <declare-styleable name="TasksCompletedView"> 
    <attr name="radius" format="dimension"/> 
    <attr name="strokeWidth" format="dimension"/> 
    <attr name="circleColor" format="color"/> 
    <attr name="ringColor" format="color"/> 
  </declare-styleable> 
   
</resources> 

源碼下載:http://xiazai.jb51.net/201701/yuanma/AndroidCompleted(jb51.net).rar

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JankMan-極致的卡頓分析系統(tǒng)

    JankMan-極致的卡頓分析系統(tǒng)

    這篇文章主要為大家介紹了JankMan-極致的卡頓分析系統(tǒng)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 四種Android數(shù)據(jù)存儲(chǔ)方式

    四種Android數(shù)據(jù)存儲(chǔ)方式

    這篇文章主要為大家詳細(xì)介紹了四種Android數(shù)據(jù)存儲(chǔ)方式,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Android為按鈕控件綁定事件的五種實(shí)現(xiàn)方式

    Android為按鈕控件綁定事件的五種實(shí)現(xiàn)方式

    本篇文章主要是介紹了Android為按鈕控件綁定事件的五種實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • android實(shí)現(xiàn)掃碼槍功能

    android實(shí)現(xiàn)掃碼槍功能

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)掃碼槍功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android中的應(yīng)用認(rèn)領(lǐng)總結(jié)

    Android中的應(yīng)用認(rèn)領(lǐng)總結(jié)

    這篇文章主要介紹了Android中的應(yīng)用認(rèn)領(lǐng)總結(jié),本文講解了如何認(rèn)領(lǐng)、對(duì)未簽名包簽名、需要替換的簽名值、驗(yàn)證簽名等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Android自定義Toast樣式實(shí)現(xiàn)方法詳解

    Android自定義Toast樣式實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Android自定義Toast樣式,Toast是一種很方便的消息提示框,會(huì)在 屏幕中顯示一個(gè)消息提示框,沒(méi)任何按鈕,也不會(huì)獲得焦點(diǎn)一段時(shí)間過(guò)后自動(dòng)消失!非常常用!本文就來(lái)通過(guò)一個(gè)例子把Toast的使用講透
    2023-01-01
  • Android使用AIDL實(shí)現(xiàn)兩個(gè)App間通信

    Android使用AIDL實(shí)現(xiàn)兩個(gè)App間通信

    這篇文章主要為大家詳細(xì)介紹了Android使用AIDL實(shí)現(xiàn)兩個(gè)App間通信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Android實(shí)現(xiàn)可收縮和擴(kuò)展的TextView

    Android實(shí)現(xiàn)可收縮和擴(kuò)展的TextView

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可收縮和擴(kuò)展的TextView,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 微信舉報(bào)解除和微信解除限制的6個(gè)方法

    微信舉報(bào)解除和微信解除限制的6個(gè)方法

    本文主要介紹微信被舉報(bào)怎么解除?微信解除限制,這里整理了6種方法,有需要的小伙伴可以參考下
    2016-09-09
  • Android?Flutter中異常處理的方法總結(jié)

    Android?Flutter中異常處理的方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Android?Flutter中異常處理的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06

最新評(píng)論

洮南市| 万安县| 监利县| 益阳市| 元谋县| 景泰县| 离岛区| 禄丰县| 嘉荫县| 连云港市| 镇平县| 富阳市| 潞西市| 祁东县| 项城市| 克东县| 平罗县| 兴业县| 天镇县| 三穗县| 分宜县| 耿马| 瓮安县| 朝阳区| 尼勒克县| 聂荣县| 涟源市| 千阳县| 图们市| 佛冈县| 西和县| 镇赉县| 定陶县| 玉溪市| 若羌县| 梅河口市| 淳安县| 逊克县| 沧州市| 滨海县| 安阳县|