自定義View簡單操作之下載進(jìn)度條按鈕

這里實現(xiàn)下載進(jìn)度條按鈕的一個簡單效果漓柑,主要是了解自定義View的一些常用的方法拣宏,drawRoundRect()零聚,drawText()等谆吴,下面是代碼塊

public classProgressButtonextendsTextView {

private static finalStringTAG="ProgressButton";

PaintmPaint,mTextPaint;

private intwidth,height,space,radius,progress;

private intprogressbtn_backgroud_color,progressbtn_backgroud_second_color;

//動畫執(zhí)行100.

private booleanisStart=false;

privateStringtext;

publicProgressButton(Context context) {

super(context);

}

publicProgressButton(Context context,@NullableAttributeSet attrs) {

super(context,attrs);

initPaint();

}

publicProgressButton(Context context,@NullableAttributeSet attrs, intdefStyleAttr) {

super(context,attrs,defStyleAttr);

}

private voidinitPaint() {

mPaint=newPaint();

progressbtn_backgroud_color= getContext().getResources().getColor(R.color.progressbtn_backgroud_color);

progressbtn_backgroud_second_color= getContext().getResources().getColor(R.color.progressbtn_backgroud_second_color);

mPaint.setColor(progressbtn_backgroud_color);

mPaint.setAntiAlias(true);

radius= DisplayUtil.dip2px(getContext(),8);

//文字畫筆

mTextPaint=newPaint();

mTextPaint.setColor(Color.WHITE);

mTextPaint.setAntiAlias(true);

mTextPaint.setTextSize(DisplayUtil.sp2px(getContext(),14));

}

@Override

protected voidonDraw(Canvas canvas) {

super.onDraw(canvas);

//背景

mPaint.setColor(progressbtn_backgroud_color);

RectF r1 =newRectF(0,0,width,height);

canvas.drawRoundRect(r1,radius,radius,mPaint);

//進(jìn)度

mPaint.setColor(progressbtn_backgroud_second_color);

intnewWidth =progress*space;

if(newWidth >=width) {

newWidth =width;

}

RectF r2 =newRectF(0,0,newWidth,height);

canvas.drawRoundRect(r2,radius,radius,mPaint);

//字體

if(progress==0) {

text="開始";

}else if(progress>=100) {

text="結(jié)束";

}else{

text="下載中 "+progress+" % ";

}

//獲取文字的高寬

Rect rect =newRect();

mTextPaint.getTextBounds(text,0,text.length(),rect);

inttextWidth = rect.width();//文本的寬度

canvas.drawText(text,(width- textWidth) /2,height/2,mTextPaint);

postDelayed(runnable,30);

}

privateRunnablerunnable=newRunnable() {

@Override

public voidrun() {

if(!isStart) {

return;

}

if(progress>100) {

return;

}

progress++;

postInvalidate();

}

};

public voidstart() {

//進(jìn)度

isStart=true;

post(runnable);

}

public voidpause() {

//進(jìn)度

isStart=false;

post(runnable);

}

@Override

protected voidonSizeChanged(intw, inth, intoldw, intoldh) {

super.onSizeChanged(w,h,oldw,oldh);

width= w;

height= h;

space=width%100==0? w /100: (w /100) +1;

}

@Override

protected voidonFinishInflate() {

super.onFinishInflate();

setOnClickListener(newOnClickListener() {

@Override

public voidonClick(View view) {

if(isStart) {

pause();

}else{

start();

}

}

});

}

@Override

protected voidonDetachedFromWindow() {

super.onDetachedFromWindow();

if(runnable!=null) {

removeCallbacks(runnable);

}

}

}

項目地址:gitee.com/401328080/ProgressButton

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載站削,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者坊萝。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钻哩,隨后出現(xiàn)的幾起案子屹堰,更是在濱河造成了極大的恐慌,老刑警劉巖街氢,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扯键,死亡現(xiàn)場離奇詭異,居然都是意外死亡珊肃,警方通過查閱死者的電腦和手機(jī)荣刑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門馅笙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人厉亏,你說我怎么就攤上這事董习。” “怎么了爱只?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵皿淋,是天一觀的道長。 經(jīng)常有香客問我恬试,道長窝趣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任训柴,我火速辦了婚禮哑舒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘幻馁。我一直安慰自己洗鸵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布仗嗦。 她就那樣靜靜地躺著膘滨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪儒将。 梳的紋絲不亂的頭發(fā)上吏祸,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機(jī)與錄音钩蚊,去河邊找鬼。 笑死蹈矮,一個胖子當(dāng)著我的面吹牛砰逻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泛鸟,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼蝠咆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了北滥?” 一聲冷哼從身側(cè)響起刚操,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎再芋,沒想到半個月后菊霜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡济赎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年鉴逞,在試婚紗的時候發(fā)現(xiàn)自己被綠了记某。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡构捡,死狀恐怖液南,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勾徽,我是刑警寧澤滑凉,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站喘帚,受9級特大地震影響譬涡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啥辨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一涡匀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溉知,春花似錦陨瘩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至玫荣,卻和暖如春甚淡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捅厂。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工贯卦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焙贷。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓撵割,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辙芍。 傳聞我的和親對象是個殘疾皇子啡彬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容