美文网首页
Android 自定义View - 左右平衡指示器

Android 自定义View - 左右平衡指示器

作者: 墨白1629 | 来源:发表于2019-03-06 10:57 被阅读0次

    自定义view用的很多了, 说实在的就是把人家的轮子拿来用 , 现在我自己造了一个, 虽然比较简单 , 但是开始了


    这篇就随便写了个平衡滑动的view , 先上个效果图再上计算平衡值的算法以及转化view需要的参数

    SliderView mBalance; // 这个是自定义view啦

    if (Math.abs(vLeft - vRight) != 0) {// 先判断左右不等于0  否则平衡值就等于0.5了  就是左右的中间

    LR = Math.abs(vLeft - vRight) / (vRight + vLeft) / 2; // 计算左右偏移的比重

    mZhong = 0.5f;

     if (vLeft > vRight) {  // 判断偏左还是偏右 , 然后转成view需要的参数

    mZhong -= LR ;

    } else {

    mZhong += LR ;

    }

    mBalance.setZhong(mZhong); //

    }

    // 传递过来的参数进行一个最大值和最小值的限定再赋值给画笔

    public void setZhong(float zhong) {

    if (zhong>1){

    zhong = 1;

    } if (zhong<0){

    zhong = 0;

    }

    this.zhong = zhong;

    }

    // onDraw 部分代码  很简单  我是来骗赞的

    float zhong = 0.5f;

    @SuppressLint("DrawAllocation")

    @Override protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);

    width = getMeasuredWidth();

    height = getMeasuredHeight();

    Paint paint = new Paint();

    paint.setStyle(Paint.Style.FILL);

    paint.setAntiAlias(true);

    paint.setColor(Color.GRAY);

    Path path = new Path();

    // 画一个三角形,设置颜色和填充 , 设置三个顶点的位置 , 以实现滑动的效果

    path.moveTo((int)(width*zhong),0);

    path.lineTo((int)(width*(zhong+0.02)),height);

    path.lineTo((int)(width*(zhong-0.02)),height);

    path.close();

    canvas.drawPath(path,paint);

    }

    相关文章

      网友评论

          本文标题:Android 自定义View - 左右平衡指示器

          本文链接:https://www.haomeiwen.com/subject/dpzzuqtx.html