2016-05-25 7 views
1

Как отправить поток символов при длинном нажатии кнопки. Вот код на LongClick кнопки,Как отправить поток символов при длительном нажатии кнопки

btnDown.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      sendMessage("S");//Here I wanted to send for example SSSSS on long press of that button 
     } 
    }); 

Я хочу, чтобы отправить поток характера на длительное нажатие кнопки до тех пор, пока пользователь не отпустит кнопку.

+1

вы считали, имеющие прикосновение вниз и вверх действия? –

+0

Нет. У меня есть кнопки. При нажатии кнопок мне нужно выполнить это действие. – Archana

+0

Вы можете легко добавить на сенсорный прослушиватель кнопку. http://stackoverflow.com/questions/11779082/listener-for-pressing-and-releasing-a-button –

ответ

0

Использование setOnTouchListener и на ACTION_DOWN написать SendMessage код

+0

У меня есть 4 кнопки, например, влево, вправо, вниз и вверх. Есть ли способ использовать «LongClickListeners»? – Archana

2

Попробуйте Как Это сделать нестандартную Listner

String mString=""; 

public class ContinousRepeatListener implements View.OnTouchListener { 

private Handler handler = new Handler(); 

private int initialInterval; 
private final int normalInterval; 
private final View.OnClickListener clickListener; 

private Runnable handlerRunnable = new Runnable() { 
    @Override 
    public void run() { 
     handler.postDelayed(this, normalInterval); 
     clickListener.onClick(downView); 
    } 
}; 

private View downView; 

/** 
* @param initialInterval The interval after first click event 
* @param normalInterval The interval after second and subsequent click 
*  events 
* @param clickListener The OnClickListener, that will be called 
*  periodically 
*/ 
public ContinousRepeatListener (int initialInterval, int normalInterval, 
     View.OnClickListener clickListener) { 
    if (clickListener == null) 
     throw new IllegalArgumentException("null runnable"); 
    if (initialInterval < 0 || normalInterval < 0) 
     throw new IllegalArgumentException("negative interval"); 

    this.initialInterval = initialInterval; 
    this.normalInterval = normalInterval; 
    this.clickListener = clickListener; 
} 

public boolean onTouch(View view, MotionEvent motionEvent) { 
    switch (motionEvent.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     handler.removeCallbacks(handlerRunnable); 
     handler.postDelayed(handlerRunnable, initialInterval); 
     downView = view; 
     downView.setPressed(true); 
     clickListener.onClick(view); 
     return true; 
    case MotionEvent.ACTION_UP: 
    case MotionEvent.ACTION_CANCEL: 
     handler.removeCallbacks(handlerRunnable); 
     downView.setPressed(false); 
     downView = null; 
     return true; 
    } 

    return false; 
} 

} 

и использовать как этот

btnDown.setOnTouchListener(new ContinousRepeatListener(400, 100, new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // the code to execute repeatedly 
      mString += "S"; 
      tvString.setText(mString); 
     } 
    })); 
+0

Каждый раз, когда длина строки равна 736, Длинный клик не происходит. Я хочу, чтобы кнопка работала так же, как и клавиши клавиатуры. – Archana

+0

@Archana показать мой обновленный ответ –

Смежные вопросы