rive-app / rive-android

A runtime for interactive animations on Android
https://rive.app
MIT License
346 stars 31 forks source link

Animation touch / click events #11

Open mspnr opened 3 years ago

mspnr commented 3 years ago

Is there any way to retrieve user click events from the animation clip?

What I'm currently missing is how to let the user to interact with animation elements. E.g. if a user clicks some area in the clip, I can trigger some animation or react somehow else:

Question to implementation mentioned in https://blog.rive.app/rives-flutter-runtime-part-1/ Frame 2 (3)

There is of course a solution, where you intercept the touch / click events for the animation view. And react to the area where the certain animation element should be. But it looks not a totally reliable solution, because you have to align / sync touch processing with animation elements.

mfth12 commented 3 years ago

keren banget

mjtalbot commented 3 years ago

Hi @applikationsprogramvara you're totally right, right now we don't expose this through the rive-android runtime (or any of our cpp based runtimes for that matter). I've added this enquiry to our more general feedback tracker, as it applies to not just android https://feedback.rive.app/228

We are talking internally about what the api for this should look like, there are a few things being talked about. But we are also in need of exposing more basic information about objects in the hierarchy. Even with just these we should be able to get you a few steps closer to better hit detection for something while it is being animated.

kelvinwatson commented 1 week ago

@mjtalbot Has there been any update on what Rive is planning to do with exposing click listening (or other native touch events like long press, swipes, etc)?

The way RiveAnimationView#onTouchEvent is implemented, we cannot call setOnClickListener to get click event callbacks on the RiveAnimationView (or other touch events as mentioned above). This means that we need to rely on Rive Listeners built into the .riv file, correct?

In addition, this link https://feedback.rive.app/228 is broken.