Android Custom Event Listener

2019-01-07 04:48发布

Say I want to make my own event listener for my class, how do I do that? Do I need to maintain a thread manually?

3条回答
闹够了就滚
2楼-- · 2019-01-07 04:55
public class CustomView extends View(){
OnCustomEventListener mListener;
:
://some code
:
:

Create an interface that will be implemented by your activity:

public interface OnCustomEventListener {
    void onEvent();
}

public void setCustomEventListener(OnCustomEventListener eventListener) {
    mListener = eventListener;
}

Now you need to know when the event is actually occurring. For example when the user touches a point on screen, override onTouchEvent method:

onTouchEvent(MotionEvent ev) {
    if (ev.getAction==MotionEvent.ACTION_DOWN) {
        if(mListener!=null) 
            mListener.onEvent();
    }
}

Similarly, you can create a specific event that you want. (examples could be touch down, wait for exactly 2 seconds and release- you would need to do some logic inside touch event).

In your activity, you can use the customView object to set an eventListener as such:

 customView.setCustomEventListener(new OnCustomEventListener() {
    public void onEvent() {
        //do whatever you want to do when the event is performed.
    }
 });   
查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-01-07 05:17

It can be done in the following way

First create an interface class :

public interface OnStopTrackEventListener {
    public void onStopTrack();
}

Then create the class that controls the interface :

public class Player {

    private OnStopTrackEventListener mOnStopTrackEventListener;

    public void setOnStopTrackEventListener(OnStopTrackEventListener eventListener)
    {
        mOnStopTrackEventListener = eventListener;
    }

    public void stop()
    {
        if(mOnStopTrackEventListener != null)
        {
            mOnStopTrackEventListener.onStopTrack();
        }

    }
}

That is all. 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
      }
});
查看更多
太酷不给撩
4楼-- · 2019-01-07 05:17

I found this tutorial to be VERY HELPFUL. It explains the four steps to using a custom listener to manage callbacks in your code:

1.Define an interface as an event contract with methods that define events and arguments which are relevant event data.

2.Setup a listener member variable and setter in the child object which can be assigned an implementation of the interface.

3.Owner passes in a listener which implements the interface and handles the events from the child object.

4.Trigger events on the defined listener when the object wants to communicate events to it's owner

Hope it helps!

查看更多
登录 后发表回答