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

自定义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 - 左右平衡指示器)