我们都知道seekBar是个横向的拖动条,也有的的时候我们需要竖向的拖动条,有两种方式:1是自己定义控件用画笔画,这样这几的问题很多也很麻烦;2.是在seekBar基础上稍作修改。无疑是后者简单的多,我们只要改变绘制的方向就好,代码如下:
@Override
protected synchronized void onDraw(Canvas canvas) {
canvas.rotate(90);//将画布旋转90度
canvas.translate(0,-getWidth());//将绘制原点移至 0,-getWidth()
super.onDraw(canvas);
}
上面代码涉及到了画布的旋转和原点的转移如下图:
如果只是旋转画布,那么控件位置就会出现在xy的负方向,也就是画布外,导致看不到控件。这时候我们就需要canvas.translate(0,-getWidth());将绘制原点移到0,-getWidth()位置,使控件处于画布上。以上我们基本配置好了画布和原点,接下来为了不然控件显示不全我们还要处理控件的宽高。代码如下:
@Override