欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android自定义控制条效果

程序员文章站 2022-09-06 10:47:47
本文实例为大家分享了android自定义控制条效果的具体代码,供大家参考,具体内容如下controlbar自定义一个可以调节大小的控件,可以根据宽高来指定控制条方向。当width >= heig...

本文实例为大家分享了android自定义控制条效果的具体代码,供大家参考,具体内容如下

controlbar

自定义一个可以调节大小的控件,可以根据宽高来指定控制条方向。当width >= heigth时,为横向控制条,否则为竖向控制条

onmeasure

根据用户给定的width与height计算控制条的坐标。

1.主要的计算思路

Android自定义控制条效果

先计算横向的的坐标点,竖向的坐标点即横向的逆时针旋转90度再向下移一个heigth的长度。

//横向坐标点
mhorlarcfirstpathx = mradius + mlarclength;
mhorlarcfirstpathy = starty + mbarheight * (1.0f - little_arc_per_width) / 2.0f ;
//对应竖向坐标点
mlarcfirstpathx = mhorlarcfirstpathy;
mlarcfirstpathy = -mhorlarcfirstpathx + longside;

ondraw

根据计算所得坐标点,构建路径,绘图

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

根据手指滑动,动态调整数值大小

@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);
  }
 }

实际效果如图所示

横向控制条

Android自定义控制条效果

竖向控制条

Android自定义控制条效果

项目

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: Android 控制条