I want geese when a user double-clicks on a post a gif is played. For this I used pl.droidsonroids.gif.GifImageView
like so:
<pl.droidsonroids.gif.GifImageView android:layout_width="match_parent" android:layout_height="303dp" android:src="@drawable/likepopgif" android:visibility="invisible" />
and to get it started I just used visible and invisible when needed:
holder.imgPost.setOnTouchListener(new View.OnTouchListener() { @SuppressLint("ClickableViewAccessibility") GestureDetector gestureDetector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener(){ @SuppressLint("ClickableViewAccessibility") @Override public boolean onDoubleTap(MotionEvent e) { Toast.makeText(visualizzaPost.this, "Liked post", Toast.LENGTH_SHORT).show(); holder.gifLike.setVisibility(View.VISIBLE); holder.gifLike.setVisibility(View.INVISIBLE); return super.onDoubleTap(e); } }); @Override public boolean onTouch(View v, MotionEvent event) { gestureDetector.onTouchEvent(event); return false; } });
obviously, however, the invisible is asynchronous with the seconds of the animation length. I’m looking for an event / property or anything else that tells the app when the animation has played and then I can make it invisible.
if i use app:loopCount="1"
remains immoral when the loop ends in this way:
Advertisement
Answer
If you want a gif to play once you can do something like this:
<pl.droidsonroids.gif.GifImageView android:layout_width="match_parent" android:layout_height="303dp" android:src="@drawable/likepopgif" android:visibility="invisible" app:loopCount="1" />
And if you want to know when the gif ends you can use getDuration()
and check if it is the same as getCurrentPosition()