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

Android自定義控制條效果

 更新時間:2020年07月03日 08:33:15   作者:rains at night  
這篇文章主要為大家詳細(xì)介紹了Android自定義控制條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android自定義控制條效果的具體代碼,供大家參考,具體內(nèi)容如下

ControlBar

自定義一個可以調(diào)節(jié)大小的控件,可以根據(jù)寬高來指定控制條方向。當(dāng)width >= heigth時,為橫向控制條,否則為豎向控制條

onMeasure

根據(jù)用戶給定的width與height計(jì)算控制條的坐標(biāo)。

1.主要的計(jì)算思路

先計(jì)算橫向的的坐標(biāo)點(diǎn),豎向的坐標(biāo)點(diǎn)即橫向的逆時針旋轉(zhuǎn)90度再向下移一個heigth的長度。

//橫向坐標(biāo)點(diǎn)
mHorLArcFirstPathX = mRadius + mLArcLength;
mHorLArcFirstPathY = startY + mBarHeight * (1.0f - LITTLE_ARC_PER_WIDTH) / 2.0f ;
//對應(yīng)豎向坐標(biāo)點(diǎn)
mLArcFirstPathX = mHorLArcFirstPathY;
mLArcFirstPathY = -mHorLArcFirstPathX + longSide;

onDraw

根據(jù)計(jì)算所得坐標(biāo)點(diǎn),構(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);
  }
 }

實(shí)際效果如圖所示

橫向控制條

豎向控制條

項(xiàng)目github地址

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

相關(guān)文章

最新評論

廉江市| 化隆| 米易县| 太和县| 穆棱市| 文昌市| 博野县| 都匀市| 车险| 永寿县| 阿拉善盟| 栾川县| 兰溪市| 海原县| 呈贡县| 十堰市| 南乐县| 鱼台县| 荣成市| 嘉善县| 威宁| 八宿县| 顺义区| 城固县| 冕宁县| 庆安县| 乌拉特中旗| 蛟河市| 麻江县| 荔浦县| 平定县| 塘沽区| 平潭县| 砚山县| 饶阳县| 丰镇市| 航空| 建平县| 吴江市| 漯河市| 开原市|