Android-Seekbar自定义进度缩放

Android-Seekbar自定义进度缩放,android,progress-bar,custom-controls,seekbar,Android,Progress Bar,Custom Controls,Seekbar,我正在尝试修改我的seekbar行为,使其更类似于iOS系统,因为在y坐标系中,只要您来自seekbar rect,它将减慢您的搜索进度。当你回到seekbar时,它会将你的进度缩放更新到你现在的位置,当你触摸seekbar时,你与seekbar的x-swip/progressbar的比例为1/1 我想达到这样的效果:当你在seekbar上移动50个像素时(y方向),我的比例因子应该是3/1:当你在x方向上移动3个像素时,你的seekbar应该移动1个像素,很明显,与你的x轴符号相对应。在sum

我正在尝试修改我的seekbar行为,使其更类似于iOS系统,因为在y坐标系中,只要您来自seekbar rect,它将减慢您的搜索进度。当你回到seekbar时,它会将你的进度缩放更新到你现在的位置,当你触摸seekbar时,你与seekbar的x-swip/progressbar的比例为1/1

我想达到这样的效果:当你在seekbar上移动50个像素时(y方向),我的比例因子应该是3/1:当你在x方向上移动3个像素时,你的seekbar应该移动1个像素,很明显,与你的x轴符号相对应。在summa中,类似ipod音乐跟踪seekbar或视频播放器(我认为Android MX播放器有一些类似于我正在寻找的东西)

有办法吗

我尝试的是重写seekbar.setOnTouchListener,但从这里开始,我不知道我可以为模拟这样的事情做些什么。我想是和seekbar.setonseekbarchaneglistener有关。。。如何覆盖手势检测和进度条计算之间的“链接”,即我可以在setOnSeekBarChangeListener.OnProgressChanged方法中找到的相同进度条?有没有像seekbar.setScalingProgressFactor这样的方法,根据y坐标沿x轴施加3/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。我们需要if-else语句来处理距离为0时的情况。在公式中插入0将得到50/0,这将给您一个错误。现在做:

double toMove = (x-mySeekbarX)*ScalingFactor;
然后将TomoMove添加到seekbar的X坐标:D


希望我能帮忙:是的,非常感谢!但你说的“seekbar的x坐标”是什么意思?您建议使用“seekbar.setProgress(toMove)”,是吗?抱歉问了个愚蠢的问题……:)@pippo不完全正确,获取一个变量,该变量跟踪seekbar的当前进度。然后,将toMove添加到其中,然后将其设置为进度。如果你需要帮助,一定要问!附言:如果你认为答案令人满意,请将其标记为已接受,然后投票表决;谢谢你的好意!你在我的工作中帮了我很多!所以我找到了这个解决方案:正如您所建议的,我覆盖了setOnTouchListener,并在单击seekbar视图时跟踪我的位置。scalingfactor的内容与您编写的内容类似,但我插入了一个小技巧以使其更平滑:我将event.getX()划分为(seekbar.getWidth()/seekbar.getMax()),以便使我的x轴移动与seekbar移动更相似;)然后设置progress(getProgress()+toMove),所有这些都在我的seekbar onTouchListener中。现在一切都好了!非常感谢!!:)