Android Java gif 只播放一次

Android Java Play gifs only once time

当用户双击 post 播放 gif 时,我想要鹅。为此,我像这样使用 pl.droidsonroids.gif.GifImageView

<pl.droidsonroids.gif.GifImageView
            android:layout_width="match_parent"
            android:layout_height="303dp"

            android:src="@drawable/likepopgif"
            android:visibility="invisible"
            />

为了开始它,我只是在需要时使用可见和不可见:

 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;
                    }
                });

然而,很明显,invisible 与动画长度的秒数不同步。我正在寻找一个事件 / 属性 或任何其他告诉应用程序何时播放动画然后我可以使其不可见的东西。

如果我使用 app:loopCount="1" 当循环以这种方式结束时仍然是不道德的:

如果你想播放一次 gif 你可以这样做:

<pl.droidsonroids.gif.GifImageView
            android:layout_width="match_parent"
            android:layout_height="303dp"

            android:src="@drawable/likepopgif"
            android:visibility="invisible"
            app:loopCount="1"
            />

如果您想知道 gif 何时结束,您可以使用 getDuration() 并检查它是否与 getCurrentPosition()

相同