Android - Seekbar自定义进度缩放

时间:2016-10-22 13:53:10

标签: android progress-bar custom-controls seekbar

我正在尝试修改我的搜索栏行为,使其更类似于iOS系统,只要您从y坐标中的搜索栏矩形,它将减慢您的搜索进度。当您返回搜索栏时,它会将您的进度缩放到您所在的位置,当您触摸搜索条时,您在搜索栏的x滑动/进度条上的比率为1/1。

我想实现这样的目标:当你说在搜索栏上方50像素(在y方向)时,我的缩放系数应该是3/1:当你在x方向移动3个像素时,你的搜索条应该移动1个像素,相应地移动到你的x轴标志。总之,像ipod音乐跟踪搜索栏或视频播放器(我认为Android的MX播放器有类似我正在寻找的东西)。

有办法吗?

我尝试的是覆盖seekbar.setOnTouchListener,但是从这里我不知道我能做些什么来模拟这样的事情。我认为是与seekbar.setOnSeekBarChangeListener相关的东西...我怎样才能覆盖手势检测和进度条计算之间的“链接”,我可以在setOnSeekBarChangeListener.OnProgressChanged方法中找到相同的进度条?有没有像seekbar.setScalingProgressFactor这样的方法用于沿x轴施加3/1像素的比例,这取决于y坐标?

我希望我的问题很清楚。

提前致谢!

1 个答案:

答案 0 :(得分:1)

在活动的OnTouch中,使用:

int x = event.getX(), y = event.getY();

然后,使用以下方法检查y坐标的距离:

int distance = mySeekbarY - y;
if (distance == 0) {
    double ScalingFactor = 1;
else {
    double ScalingFactor = 50/(3*Math.abs(distance));
}

当点击距离为50px时,距离变为50.将50插入公式中,我们可以根据需要获得50 /(3 * 50)= 1/3。当距离为0时,我们需要if-else语句来处理这种情况。将0插入公式会得到50/0这会给你一个错误。现在做:

double toMove = (x-mySeekbarX)*ScalingFactor;

然后将toMove添加到搜索栏的X坐标。 :d

希望我帮助过:D

相关问题