为什么GIF ImageView从中断处继续

问题描述

周末愉快

我在活动中使用GIF ImageView。当我完成并开始活动时,GIF ImageView将从中断处继续。我不想要这个,我想重新启动GIF ImageView。我怎样才能做到这一点?请帮我。我将分享与GIF ImageView相关的代码。

我的播放按钮可以:

public void play(View v) {
    if (mTimerRunning) {
        pauseGIF();
    } else {
        for (int i = 0; i < textArray.length; i++) {
            tv[i].setFocusable(false);
            tv[i].setClickable(false);
            tv[i].setBackgroundColor(Color.TRANSPARENT);
        }
        nextButton.setVisibility(View.INVISIBLE);
        buttonBack.setVisibility(View.INVISIBLE);
        favreread.setVisibility(View.INVISIBLE);
        startGIF();
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                player2 = MediaPlayer.create(getApplicationContext(),R.raw.hop);
                player2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        stopPlayer2();
                    }
                });
                player2.start();
            }
        },60000);
    }
}

暂停GIF:

private void pauseGIF() {
    mTimerRunning = false;
    if (marka.getDrawable() instanceof Animatable) {  //to pause gif
        ((Animatable) marka.getDrawable()).stop();
    }
    if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
        start.setBackgroundDrawable(ContextCompat.getDrawable(Reread1Activity.this,R.drawable.basla) );
    } else {
        start.setBackground(ContextCompat.getDrawable(Reread1Activity.this,R.drawable.basla));
    }
}

startGIF:

private void startGIF() {
    start.setVisibility(View.INVISIBLE);
    Glide.with(this).asGif().load(R.raw.saat) //setting for gif to inform when finished
            .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.NONE)).listener(new RequestListener<GifDrawable>() {

        @Override
        public boolean onLoadFailed(@Nullable GlideException e,Object model,Target<GifDrawable> target,boolean isFirstResource) {
            return false;
        }

        @Override
        public boolean onResourceReady(final GifDrawable resource,DataSource dataSource,boolean isFirstResource) {
            resource.setLoopCount(1);
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while(true)
                        if(!resource.isRunning()) {
                            runOnUiThread(new Runnable() {  //to avoid some errors
                                @Override
                                public void run() {
                                    mTimerRunning = false;
                                    if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
                                        start.setBackgroundDrawable(ContextCompat.getDrawable(Reread1Activity.this,R.drawable.basla) );
                                    } else {
                                        start.setBackground(ContextCompat.getDrawable(Reread1Activity.this,R.drawable.basla));
                                    }

                                }
                            });
                            break;
                        }
                }
            }).start();
            return false;
        }
    }).into(marka);
    mTimerRunning = true;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)