自定义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);
}
网友评论