Android自定義控制條效果
本文實例為大家分享了Android自定義控制條效果的具體代碼,供大家參考,具體內(nèi)容如下
ControlBar
自定義一個可以調(diào)節(jié)大小的控件,可以根據(jù)寬高來指定控制條方向。當(dāng)width >= heigth時,為橫向控制條,否則為豎向控制條
onMeasure
根據(jù)用戶給定的width與height計算控制條的坐標(biāo)。
1.主要的計算思路

先計算橫向的的坐標(biāo)點,豎向的坐標(biāo)點即橫向的逆時針旋轉(zhuǎn)90度再向下移一個heigth的長度。
//橫向坐標(biāo)點 mHorLArcFirstPathX = mRadius + mLArcLength; mHorLArcFirstPathY = startY + mBarHeight * (1.0f - LITTLE_ARC_PER_WIDTH) / 2.0f ; //對應(yīng)豎向坐標(biāo)點 mLArcFirstPathX = mHorLArcFirstPathY; mLArcFirstPathY = -mHorLArcFirstPathX + longSide;
onDraw
根據(jù)計算所得坐標(biāo)點,構(gòu)建路徑,繪圖
super.onDraw(canvas);
mBgPaint.setColor(Color.WHITE);
canvas.drawPath(mBgPath, mBgPaint);
mBgPaint.setColor(Color.GRAY);
canvas.drawPath(mMaxPath, mBgPaint);
canvas.drawPath(mPath, mPaint);
mBgPaint.setColor(Color.WHITE);
if(mDirection == HORIZONTAL){
canvas.drawCircle(mRadius + mPercent * mBarWidth, mRadius, mRadius, mBgPaint);
canvas.drawCircle(mRadius + mPercent * mBarWidth, mRadius, mRadius - SPACING, mPaint);
}else {
canvas.drawCircle(mRadius, mHeight - (mRadius + mPercent * mBarWidth), mRadius, mBgPaint);
canvas.drawCircle(mRadius, mHeight - (mRadius + mPercent * mBarWidth), mRadius - SPACING, mPaint);
}
onTouchEvent
根據(jù)手指滑動,動態(tài)調(diào)整數(shù)值大小
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
float distance = 0;
float maxDist = 0;
switch (mDirection){
case HORIZONTAL:
distance = event.getX();
maxDist = mWidth;
break;
case VERTICAL:
distance = mHeight - event.getY();
maxDist = mHeight;
break;
}
if(distance <= mRadius){
updateView(MIN_VALUE);
}else if(distance >= maxDist - mRadius){
updateView(MAX_VALUE);
}else {
updateView(calculatingValue(distance));
}
return true;
default:
return super.onTouchEvent(event);
}
}
實際效果如圖所示
橫向控制條

豎向控制條

項目github地址
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android 七種進(jìn)度條的樣式
- Android中實現(xiàn)Webview頂部帶進(jìn)度條的方法
- android自定義進(jìn)度條漸變色View的實例代碼
- Android文件下載進(jìn)度條的實現(xiàn)代碼
- android ListView和ProgressBar(進(jìn)度條控件)的使用方法
- Android編程之ProgressBar圓形進(jìn)度條顏色設(shè)置方法
- Android中自定義進(jìn)度條詳解
- 實例詳解Android自定義ProgressDialog進(jìn)度條對話框的實現(xiàn)
- Android三種方式實現(xiàn)ProgressBar自定義圓形進(jìn)度條
- Android ProgressBar進(jìn)度條使用詳解
相關(guān)文章
android TextView屬性的詳細(xì)介紹 分享
android TextView屬性的詳細(xì)介紹 分享,需要的朋友可以參考一下2013-05-05
Android開發(fā)之自定義星星評分控件RatingBar用法示例
這篇文章主要介紹了Android開發(fā)之自定義星星評分控件RatingBar用法,結(jié)合具體實例形式分析了Android自定義評分控件的具體實現(xiàn)步驟以及功能、布局相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
Android CountDownTimer實現(xiàn)定時器和倒計時效果
這篇文章主要為大家詳細(xì)介紹了Android CountDownTimer實現(xiàn)定時器和倒計時效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02
Android 中 viewpager 滑動指示器的實例代碼
本文通過實例代碼給大家介紹了android 中 viewpager 滑動指示器,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-12-12

