Android Custom Event Listener
Powiedz, że chcę zrobić własny słuchacz zdarzeń dla mojej klasy, jak to zrobić? Czy muszę ręcznie utrzymywać wątek?
2 answers
public class CustomView extends View(){
OnCustomEventListener mListener;
:
://some code
:
:
Utwórz interfejs, który zostanie zaimplementowany przez Twoją aktywność:
public interface OnCustomEventListener {
void onEvent();
}
public void setCustomEventListener(OnCustomEventListener eventListener) {
mListener = eventListener;
}
Teraz musisz wiedzieć, kiedy to wydarzenie rzeczywiście ma miejsce. Na przykład, gdy użytkownik dotknie punktu na ekranie, nadpisuje metodę onTouchEvent:
onTouchEvent(MotionEvent ev) {
if (ev.getAction==MotionEvent.ACTION_DOWN) {
if(mListener!=null)
mListener.onEvent();
}
}
Podobnie można utworzyć określone zdarzenie, które chcesz. (przykładami mogą być dotknięcie, odczekanie dokładnie 2 sekund i zwolnienie-trzeba by zrobić trochę logiki wewnątrz zdarzenia dotykowego).
W swojej aktywności możesz użyć customView obiekt do Ustawienia eventListener jako takiego:
customView.setCustomEventListener(new OnCustomEventListener() {
public void onEvent() {
//do whatever you want to do when the event is performed.
}
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-24 20:18:03
Można to zrobić w następujący sposób
Najpierw Utwórz klasę interfejsu:
public interface OnStopTrackEventListener {
public void onStopTrack();
}
Następnie utwórz klasę sterującą interfejsem:
public class Player {
private OnStopTrackEventListener mOnStopTrackEventListener;
public void setOnStopTrackEventListener(OnStopTrackEventListener eventListener)
{
mOnStopTrackEventListener = eventListener;
}
public void stop()
{
if(mOnStopTrackEventListener != null)
{
mOnStopTrackEventListener.onStopTrack();
}
}
}
To wszystko. Let ' s use it now
Player player = new Player();
player.stop(); //We are stopping music
player.setOnStopTrackEventListener(new OnStopTrackEventListener() {
@Override
public void onStopTrack() {
//Code to work when music stops
}
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-02 06:42:42