Android Seekbar拇指点击监听器

Android Seekbar拇指点击监听器,android,android-seekbar,Android,Android Seekbar,我已经制作了我的音乐应用程序,现在我需要在seekbar上进行音乐播放/暂停控制。这是图片 如您所见,有带有自定义拇指图像的seekbar,当用户触摸拇指音乐开始播放或停止时,是否可以实现类似的功能?基本上,我只需要为seekbarthumb实现侦听器。我知道如何从seekbar获取thumb,但是thumb是可绘制的,因此我无法实现任何侦听器audioSeekBar.getThumb()您应该侦听touchEvent,计算触摸在seekbar拇指上的位置,并防止在用户移动seekbar但未单击

我已经制作了我的音乐应用程序,现在我需要在seekbar上进行音乐播放/暂停控制。这是图片


如您所见,有带有自定义拇指图像的
seekbar
,当用户触摸拇指音乐开始播放或停止时,是否可以实现类似的功能?基本上,我只需要为
seekbar
thumb实现侦听器。我知道如何从
seekbar
获取thumb,但是thumb是
可绘制的
,因此我无法实现任何侦听器
audioSeekBar.getThumb()

您应该侦听touchEvent,计算触摸在seekbar拇指上的位置,并防止在用户移动seekbar但未单击时调用click事件

像这样的事情:

seekBar.setOnTouchListener(new View.OnTouchListener() {

        float prevX = Float.MIN_VALUE;
        float eps = 0.001f;

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            Drawable drawable = seekBar.getThumb();

            if (event.getAction() == MotionEvent.ACTION_DOWN) {

                if (event.getX() >= drawable.getBounds().left && event.getX() <= drawable.getBounds().right
                        && event.getRawY() >= drawable.getBounds().top && event.getRawY() >= drawable.getBounds().bottom) {
                    prevX = event.getX();
                }
            }

            if (event.getAction() == MotionEvent.ACTION_UP) {

                if (event.getX() >= drawable.getBounds().left && event.getX() <= drawable.getBounds().right
                        && event.getRawY() >= drawable.getBounds().top && event.getRawY() >= drawable.getBounds().bottom) {
                    if (Math.abs(event.getX() - prevX) < eps) {
                        Log.d("here", "clicked on place");
                    }
                }
                prevX = Float.MIN_VALUE;
            }

            return false;
        }
    });
}
seekBar.setOnTouchListener(新视图.OnTouchListener(){
float prevX=float.MIN_值;
浮子eps=0.001f;
@凌驾
公共布尔onTouch(视图v,运动事件){
Drawable Drawable=seekBar.getThumb();
if(event.getAction()==MotionEvent.ACTION\u向下){
如果(event.getX()>=drawable.getBounds().left&&event.getX()=drawable.getBounds().top&&event.getRawY()>=drawable.getBounds().bottom){
prevX=event.getX();
}
}
if(event.getAction()==MotionEvent.ACTION\u UP){
如果(event.getX()>=drawable.getBounds().left&&event.getX()=drawable.getBounds().top&&event.getRawY()>=drawable.getBounds().bottom){
if(Math.abs(event.getX()-prevX)
seekbarchaneglistener怎么办?@Opiatefuchs
seekbarchaneglistener
触碰seekbar时会触发我需要的是知道什么时候触碰seekbar拇指真的像这样特别吗?所以你想添加一个在按下seekbar时不会发生的功能,只有在按下拇指时才会发生,对吗?@Opiatefuchs,是的,这正是我需要的。所以没有这样的方法,但我想你可以通过监视位置来解决问题。例如,制作一个onTouchListener,它允许查找运动事件是否为ACTION\u MOVE,并收听ACTION\u DOWN/ACTION\u UP。。。。。。