先上结论:大部分文章里宣称采用canvas.roate(-90); canvas.translate(-getHeight(),0)
至少在5.0版本以上是搞不定的。
垂直的SeekBar是一个天坑,建议直接采用这个开源库: VerticalSeekBar
接下来解释一下实现垂直SeekBar会遇到的两个问题。
-
在旋转canvas的情形下直接setProgress不会成功。原因可能是父类中setProgress不能被主动调用。库中采用了反射的方式,请自行查阅。
-
Lollipop版本以上的系统不能用重写onTouchEvent的方式来实现控件垂直,问题在这里

图中灰色的圆点原本应当和thumb重合。但当canvas旋转90度之后,这个点并没有随着canvas旋转,而是系统单独绘制的。因此,上述的库对高版本的系统采用了直接旋转整个View。
网友评论