Android Seekbar thumb onclick listener

时间:2016-10-11 13:48:31

标签: android android-seekbar

我制作了音乐应用程序,现在我需要在搜索栏上进行音乐播放/暂停控制。这是图像enter image description here

正如你所看到的那样seekbar有自定义拇指图像,当用户触摸拇指音乐开始播放或停止时,是否可以实现类似的东西?基本上我只需要为seekbar拇指实现监听器。我知道如何从drawable获取拇指,但拇指是audioSeekBar.getThumb(),所以我无法实现任何监听器。 select a.*, case when b.DuplicateOf is null then 0 else 1 end 'Duplicity' from myTable a outer apply ( Select top 1 id 'DuplicateOf' from myTable where id <> a.id and Value_my = a.Value_my and Date_my = a.Date_my )b

1 个答案:

答案 0 :(得分:1)

你应该听touchEvent,计算触摸在seekbar拇指上的位置,并防止在用户移动搜索栏但未点击时调用点击事件。

像这样:

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;
        }
    });
}