2015-03-23 1 views
3

Я хотел бы зарегистрировать событие clickable на большом пальце, чтобы открыть действие, когда пользователь установил его. Является ли это возможным? Я нашел аналогичный вопрос здесь Seekbar's thumb on click, но не нашел ответа. Я не хочу, чтобы переместить панель поиска, но хочу открыть активность, когда пользователь нажимает только на удары.Большой указатель искателя на клик-листере

+0

возможно дубликат [эмпирическое SeekBar на клик] (http://stackoverflow.com/questions/11684463/seekbars-thumb-on-click) – Marcus

+0

Да. Его дублирующий вопрос. Я также упоминаю об этом, но правильного ответа нет. См. Последний комментарий «Я хочу, чтобы можно было щелкнуть только в большом пальце. Этот слушатель запускается нажатием на каждую часть строки поиска». Я тоже в том же положении. Пожалуйста, помогите мне. Я много искал, но не смог найти ответ – user2504840

ответ

0

Это срабатывает, когда пользователь нажимает на большой палец. См. Начало onProgressChanged() Надеюсь, это поможет. :)

Если у вас есть какие-либо вопросы о том, как это работает, не стесняйтесь комментировать.

mSeekBarSpeed.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
    int progress = mSeekBarSpeed.getProgress(); 

    boolean started = false; //use this variable to see whether the user clicked the right place 


    @Override 
    public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) { 
     if(!started){ //check to see if user clicks the right place 
      //if the user clicks within a specific threshold 
      float threshold = (float)seekBar.getMax()/seekBar.getWidth() * seekBar.getThumb().getIntrinsicWidth()/2; 
      if(Math.abs(progressValue - progress) < threshold){ 
       if(fromUser){ //checks if user actually clicked it 
        started = true; 

        //IF YOU WANT TO DO SOMETHING RIGHT WHERE THE USER CLICKS IT HERE IS THE PLACE 
       } 

      }else{ 
       seekBar.setProgress(progress); //set to original progress 
       onStopTrackingTouch(seekBar); //not really necessary, keep or delete based on your needs 
       return; //get out of method 
      } 
     } 

     if(started) { 

      progress = progressValue; //update progress variable 
      System.out.println("onProgressChanged:" + progress + "/" + seekBar.getMax()); 

      //DO WHAT YOU NEED TO DO WHEN PROGRESS IS CHANGING 

     } 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 
     System.out.println("onStartTracking:" + progress + "/" + seekBar.getMax()); 
    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 
     System.out.println("onStopTracking:" + progress + "/" + seekBar.getMax()); 
     //DO WHATEVER YOU NEED TO DO WHEN PROGRESS IS DONE CHANGING 

     started = false; //remember to set variable to false 
    } 

}); 
Смежные вопросы