一个ImageView多幅图像

时间:2018-07-16 16:07:10

标签: java android android-glide

所以我正在寻找解决方案。我目前有一个Firebase数据库,用于存储我所有用户的信息。然后,我通过为单个值事件运行一个侦听器将其放入ImageViewTextView中,这为我提供了一个我可以迭代的用户列表。

关键是我不想滑动以更改他们正在查看的用户;我希望他们单击​​一个按钮。 这是当前的onClick侦听器:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        try {
            boolean verified;
            //REMOVE USER FROM LIST
            String matchUid = userList.get(0).getUid();
            userList.remove(0);
        }
        // GET NEW USER
        String url = userList.get(0).getPhoto1URI();
        String name = userList.get(0).getFirstname();

        final String userage = String.valueOf(userList.get(0).getAge());

        // SET NEW USER
        if(url != null && name != null) {
            mainName.setText(name);
            mainAge.setText(userage);
            Glide.with(getApplicationContext())
                           .load(url)
                           .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                           .centerCrop()
                           .crossFade()
                           .error(R.drawable.addimage)
                           .into(profileImage);
        }
    }
});

当前,一旦按下按钮,此过程将花费很长时间在用户之间切换,因此必须有一种更有效的方法。有什么方法可以预加载下一张图像,从而缩短加载时间?

2 个答案:

答案 0 :(得分:0)

您应该仅在开始时获取并在Arraylist中添加所有详细信息。然后,您可以通过单击按钮从列表中获取特定的详细信息。

答案 1 :(得分:0)

This post从用户Vinay Wadhwa那里得到了一个答案,表明您可以使用.downloadOnly

FutureTarget<File> future = Glide.with(context)
                                .load(url)
                                .downloadOnly(width, height);

或者,您可以使用.preload

Glide.with(context)
    .load(url)
    .preload(width, height);

然后您可以通过以下方式使用图像:

Glide.with(context)
    .load(url)
    .into(imageView);

在我上面链接的同一篇文章中,被接受的答案演示了使用LruCache预加载图像的另一种解决方案。

请务必查看上面的链接,并让我知道该信息是否有帮助。

相关问题