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

Android自定義View實現(xiàn)圓形進度條

 更新時間:2022年06月29日 16:28:10   作者:360度旋轉(zhuǎn)的貓  
這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)圓形進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android自定義View實現(xiàn)圓形進度條的具體代碼,供大家參考,具體內(nèi)容如下

原理非常簡單,在自定義View的基礎(chǔ)上使用Canvas的drawCircle畫兩個圓,一個圓代表總體,一個圓代表現(xiàn)有進度,在主線程中使用set方法在Handler中傳遞進度,進度和總體都可以添加set、get方法進行自定義

//主線程代碼如下

public class MainActivity extends Activity {
private Button mBtn_start;
private MyProgresscircle myProgresscircle;
private int progress;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
progress++;
if(progress<=100){//形成循環(huán)
myProgresscircle.setCurrentProgress(progress);//傳遞進度
handler.sendEmptyMessageDelayed(0,200);//模擬下載延遲
? ? ? ? ? ? ? ? ? ? }
break;
? ? ? ? ? ? }
? ? ? ? }
? ? };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
myProgresscircle= (MyProgresscircle) findViewById(R.id.myprogress);
mBtn_start= (Button) findViewById(R.id.button_start);
mBtn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.sendEmptyMessage(0);//啟動下載發(fā)送一個空消息開始
? ? ? ? ? ? }
? ? ? ? });
? ? }
}

//自定義View代碼:

public class MyProgresscircle extends View {
private int width;
private int height;
private Paint mPaintText;
private Paint mPaintCircle;
private Paint mPaintCircleCurrent;
private int CurrentProgress;
private int MaxProgress=100;

public void setCurrentProgress(int currentProgress) {

CurrentProgress = currentProgress;
? ? ? ? invalidate();
? ? }

public int getMaxProgress() {
return MaxProgress;
? ? }

public void setMaxProgress(int maxProgress) {
MaxProgress = maxProgress;
? ? }

public MyProgresscircle(Context context) {
super(context);
? ? }

public MyProgresscircle(Context context, AttributeSet attrs) {
super(context, attrs);
mPaintText=new Paint();//字體進度畫筆
mPaintText.setTextSize(80);
mPaintText.setColor(Color.WHITE);
mPaintText.setStrokeWidth(10);
mPaintText.setTextAlign(Paint.Align.CENTER);//偏移

mPaintCircle=new Paint();//外圓畫筆
mPaintCircle.setColor(Color.GRAY);
mPaintCircle.setAntiAlias(true);
mPaintCircle.setStrokeWidth(10);

mPaintCircleCurrent=new Paint();//進度圓畫筆
mPaintCircleCurrent.setColor(Color.YELLOW);
mPaintCircleCurrent.setAntiAlias(true);
mPaintCircleCurrent.setStrokeWidth(10);
? ? }

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {//這個復(fù)寫方法用來得到寬和高
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
? ? ? ? setMeasuredDimension(width, height);
? ? }

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
? ? ? ? canvas.drawCircle(width / 2, height / 2, 200, mPaintCircle);
? ? ? ? canvas.drawCircle(width/2,height/2,CurrentProgress/100f*200,mPaintCircleCurrent);
? ? ? ? canvas.drawText(CurrentProgress*100f/MaxProgress+"%",width/2,height/2,mPaintText);//把進度轉(zhuǎn)化為百分比
? ? }
}

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

相關(guān)文章

  • Android Loop機制中Looper與handler詳細分析

    Android Loop機制中Looper與handler詳細分析

    Handler是Android線程之間的消息機制,主要的作用是將一個任務(wù)切換到指定的線程中去執(zhí)行,準確的說是切換到構(gòu)成Handler的looper所在的線程中去出處理。本文將詳細介紹Android Handler機制和Looper Handler Message關(guān)系
    2022-11-11
  • 基于RxJava框架實現(xiàn)獲取驗證碼的輔助類

    基于RxJava框架實現(xiàn)獲取驗證碼的輔助類

    這篇文章主要為大家詳細介紹了基于RxJava框架實現(xiàn)獲取驗證碼的輔助類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android仿優(yōu)酷圓形菜單學(xué)習(xí)筆記分享

    Android仿優(yōu)酷圓形菜單學(xué)習(xí)筆記分享

    這篇文章主要為大家分享了Android仿優(yōu)酷圓形菜單學(xué)習(xí)筆記,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android手機顯示多彩霓虹燈效果

    Android手機顯示多彩霓虹燈效果

    這篇文章主要為大家詳細介紹了Android手機顯示多彩霓虹燈效果的小實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android藍牙的開啟和搜索設(shè)備功能開發(fā)實例

    Android藍牙的開啟和搜索設(shè)備功能開發(fā)實例

    這篇文章主要介紹了Android藍牙服務(wù)啟動搜索流程,了解內(nèi)部原理是為了幫助我們做擴展,同時也是驗證了一個人的學(xué)習(xí)能力,如果你想讓自己的職業(yè)道路更上一層樓,這些底層的東西你是必須要會的
    2023-04-04
  • android仿即刻點贊文字部分的自定義View的示例代碼

    android仿即刻點贊文字部分的自定義View的示例代碼

    本篇文章主要介紹了android仿即刻點贊文字部分的自定義View的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android音視頻開發(fā)之MediaExtactor使用教程

    Android音視頻開發(fā)之MediaExtactor使用教程

    MediaExtactor在Android音視頻開發(fā)中負責(zé)提取音視頻信息和數(shù)據(jù)流的功能,可以通過該類實現(xiàn)從多媒體文件中剝離得到音頻和視頻的能力。本文將詳細為大家介紹一下它的使用,感興趣的可以了解一下
    2022-04-04
  • android?studio實現(xiàn)簡單的計算器小功能

    android?studio實現(xiàn)簡單的計算器小功能

    這篇文章主要為大家詳細介紹了android?studio實現(xiàn)簡單的計算器小功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 詳解Flutter中key的正確使用方式

    詳解Flutter中key的正確使用方式

    這篇文章主要為大家介紹了詳解Flutter中key的正確使用方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 基于Android掃描sd卡與系統(tǒng)文件的介紹

    基于Android掃描sd卡與系統(tǒng)文件的介紹

    本篇文章是對Android掃描sd卡與系統(tǒng)文件進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06

最新評論

屯昌县| 乐都县| 治多县| 报价| 若尔盖县| 板桥市| 玉溪市| 多伦县| 济南市| 永定县| 柳林县| 张北县| 大同市| 隆子县| 屏山县| 平和县| 景宁| 保靖县| 常德市| 崇义县| 新源县| 慈利县| 汽车| 体育| 寿光市| 会宁县| 九龙县| 房山区| 阳谷县| 贵南县| 望都县| 贵州省| SHOW| 东台市| 孟州市| 根河市| 丽水市| 柳州市| 涞源县| 锡林郭勒盟| 梅河口市|