Как я могу изменить источник изображения ImageView через некоторое время программно - PullRequest
0 голосов
/ 18 января 2019

Я хочу обновить источник изображения через некоторое время, но при изменении источника он будет перекрываться с предыдущим.это полный код моего класса деятельности.Я пробовал и runnable и countdowmtimer, но проблема все еще

enter image description here[1]

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_content_pop_up);
        imageUrl=new ArrayList<>();
        for(int i=1;i<=3;i++)
        {
            imageUrl.add("https://www.gstatic.com/webp/gallery3/"+i+".png");
        }
        LinearLayoutManager layoutManager=new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false);
        recyclerImagevIew=(RecyclerView)findViewById(R.id.image_recycler_view);
        recyclerImagevIew.setLayoutManager(layoutManager);
        ImagePopupAdapter imagePopupAdapter =new ImagePopupAdapter(this,imageUrl);
        recyclerImagevIew.setAdapter(imagePopupAdapter);
        background_Image=(ImageView) findViewById(R.id.background_image);
        cross_sign =(TextView)findViewById(R.id.cross_button);
        cross_sign.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        //  StartAsyncTask();
        // StartTimer();
        handler=new Handler();
        runnable= new Runnable() {
            @Override
            public void run() {
                if(index<imageUrl.size()) {
                    Glide.with(getApplicationContext()).load(imageUrl.get(index)).into(background_Image);
                    index++;
                    handler.postDelayed(runnable, 5000);
                }
            }
        };
        handler.postDelayed(runnable,1000);
    }
    public void StartTimer()
    {
        CountDownTimer timer = new CountDownTimer(15000, 5000) //10 second Timer
        {
            public void onTick(long l)
            {
                Glide.with(getApplicationContext()).load(imageUrl.get(index)).into(background_Image);
                index++;
            }

            @Override
            public void onFinish()
            {
                SystemClock.sleep(5000);
                handler.post(new Runnable() {
                    public void run() {
                        finish();
                    }
                });
            };
        }.start();

    }

1 Ответ

0 голосов
/ 18 января 2019

Как я могу изменить источник изображения ImageView через некоторое время progmatically

Эта проблема возникает из-за того, что Glide приведет к удалению всех URL-адресов изображений, поэтому вам придется использовать diskCacheStrategy(DiskCacheStrategy.NONE) для решения этой проблемы. Я уверен, что вы не получите эту проблему во время запуска приложения в первый раз.

Примечание: Пожалуйста, проверьте приложение в реальном устройстве.

Glide.with(DemoActivity.this)
    .load(Uri.parse("file://" + imagePath))
    .diskCacheStrategy(DiskCacheStrategy.NONE)
    .skipMemoryCache(true)
    .into(mImage);

В вашем случае

Glide.with(this)
            .load("")
            .apply(new RequestOptions()
                    .placeholder(R.drawable.ic_launcher_background)
                    .diskCacheStrategy(DiskCacheStrategy.NONE)
                    .skipMemoryCache(true))
            .into(view);

Подробнее: Ссылка

Подробнее о скольжении

...