Java 如何像instagram一样快速加载图像

Java 如何像instagram一样快速加载图像,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我正在尝试将firebase中的图像加载到回收器视图中,但问题是速度太慢,我想知道如何达到Instagram加载图像的速度。有人能帮我吗 以下是我如何将图像从firebase加载到recycler视图的代码 Java文件 public class Search_Fragment extends Fragment { public List<Upload> mUploads; PostAdapter postsAdapter; @Nullable @O

我正在尝试将firebase中的图像加载到回收器视图中,但问题是速度太慢,我想知道如何达到Instagram加载图像的速度。有人能帮我吗

以下是我如何将图像从firebase加载到recycler视图的代码

Java文件

public class Search_Fragment extends Fragment {
    public List<Upload> mUploads;
    PostAdapter postsAdapter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_search, container, false);
        RecyclerView postRecyclerView = view.findViewById(R.id.postRecyclerView);
        DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("uploads");
        postRecyclerView.setLayoutManager(
                new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
        );
        mUploads = new ArrayList<>();
        postsAdapter = new PostAdapter(getContext(), mUploads);
        postRecyclerView.setAdapter(postsAdapter);

        //This are images that i tried manual ly and it worked fine
//        List<PostItem> postItems = new ArrayList<>();
//        postItems.add(new PostItem(R.drawable.image1));
//        postItems.add(new PostItem(R.drawable.image2));
//        postItems.add(new PostItem(R.drawable.image3));
//        postItems.add(new PostItem(R.drawable.image4));
//        postItems.add(new PostItem(R.drawable.image5));
//        postItems.add(new PostItem(R.drawable.image7));
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                    for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                        Upload upload = dataSnapshot.getValue(Upload.class);
                        mUploads.add(upload);

                }
                //notify the adapter
                postsAdapter.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
            }
        });
        return view;
    }
}

由于图像的大小,加载图像需要时间。有两个选项可以快速加载图像

  • 调整图像大小
  • 创建缩略图图像
  • 要调整大小,可以使用滑动覆盖方法:

    GlideApp  
        .with(context)
        .load(url)
        .placeholder(new ColorDrawable(Color.GREY))
        .override(400, 400) // resizes the image to these dimensions (in pixel). resize does not respect aspect ratio
        .into(imageViewResize);
    

    对于缩略图,您必须创建较小尺寸的图像,然后在应用程序中使用它。

    您能解释一下我没有听说过的缩略图过程吗?缩略图图像是指我们将其调整为较小尺寸并上传到服务器上的图像。我们在列表中显示缩略图,当用户单击该图像时,我们在详细信息屏幕中显示真实图像。好的,谢谢您的信息,顺便说一下,您也可以使用第一个选项。您能告诉我如何在这里使用延迟加载吗
    public class Upload {
        private String mImageUrl;
    
    
        public Upload() {
    
        }
    
        public Upload(String imageUrl) {
            mImageUrl = imageUrl;
        }
    
        public String getmImageUrl() {
            return mImageUrl;
        }
    
        public void setmImageUrl(String mImageUrl) {
            this.mImageUrl = mImageUrl;
        }
    }
    
    GlideApp  
        .with(context)
        .load(url)
        .placeholder(new ColorDrawable(Color.GREY))
        .override(400, 400) // resizes the image to these dimensions (in pixel). resize does not respect aspect ratio
        .into(imageViewResize);