In several apps I use Panels instead of buttons and manage all in the Touch event.
Knowing the x and y coordinates you know where you are and can handle according to it.
I use it to display tooltips:
- in DOWN I display the tooltip
- in MOVE I check if the 'finger' is in the Panel area or not and change the tooltip.
- in UP I execute the function if the 'finger' is inside the Panel and do nothing when outsides. This allows the user to check what the button does without executing the function.
Checking the time between DOWN and UP you can simulate Click and LongClick events.