I have overridden the onTouchEvent method in a custom view:
@Override
public boolean onTouchEvent(@NonNull final MotionEvent event) {
Log.d("TouchEvent", String.valueOf(event.getActionMasked()));
if (event.getActionMasked() == MotionEvent.ACTION_UP){
//start animation
}
return super.onTouchEvent(event);
}
That view is used in an adapter/adapterview (GridView).
However it looks like the AdapterView consumes the touch/click event and I can never see a event.getActionMasked() == MotionEvent.ACTION_UP
being true. The onTouchEvent only gets notified for ACTION_DOWN
events (the above Log.d prints only "0").
Please note that I also have an onItemClick listener attached on my AdapterView:
mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//start activity
}
});
I want the onTouchEvent() of my custom view to fire just before the onItemClick() of the adapter and of course being notified for any MotionEvent.ACTION_UP
.