繁体   English   中英

让用户等待活动完成加载

[英]Make the user waiting for activity to finish loading

大家好,我正在开发一个从 firestore 中检索数据的项目,其中一些包含图像的 URL。 当我启动应用程序时,我注意到加载图像时出现延迟。 所以我想到了我在 Facebook 应用程序中看到的内容,当加载显示带有一些动画的视图的图像时,通知用户该应用程序仍在后台加载,请提供任何帮助。

这就是我检索数据的方式

 PostsAdapter=new FirestoreRecyclerAdapter<docs,PostsViewHolder>(allPosts) {
        @NonNull
        @Override
        public PostsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view= 
   LayoutInflater.from(parent.getContext()).inflate(R.layout.single_post,parent,false);

            return new PostsViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull final PostsViewHolder holder, int position, @NonNull final docs model) {


            holder.postTitle.setText(model.getTitle());
            holder.postImage.setText(model.getPostimage());
            holder.image_1.setText(model.getImage_1());
            holder.image_2.setText(model.getImage_2());
            holder.content_1.setText(model.getContent_1());
            holder.content_2.setText(model.getContent_2());

            holder.Date.setText(model.getDate());
            holder.postId.setAnimation(AnimationUtils.loadAnimation(getContext(),R.anim.item_animation_fall_down));
            holder.singlePostCard.setAnimation(AnimationUtils.loadAnimation(getContext(),R.anim.slide_right));
            holder.titleLayout.setAnimation(AnimationUtils.loadAnimation(getContext(),R.anim.slide_up));


           Glide.with(requireContext())
                    .load(model.getPostimage())
                    .error(R.drawable.error_uom)
                    .placeholder(R.drawable.ic_account)
                   
                    .into(holder.spImage);
            holder.itemView.playSoundEffect(SoundEffectConstants.CLICK);
            holder.itemView.setOnClickListener(v -> {
                Intent intent = new Intent(v.getContext(), full_content.class);



                vu=v;
                holder.itemView.playSoundEffect(0);
                intent.putExtra("postImage",model.getPostimage());
                intent.putExtra("postTitle",model.getTitle());
                intent.putExtra("content_1",model.getContent_1());
                intent.putExtra("content_2",model.getContent_2());
                intent.putExtra("image_1",model.getImage_1());
                intent.putExtra("image_2",model.getImage_2());
                intent.putExtra("date",model.getDate());



                v.getContext().startActivity(intent);
            });
        }
    };

您可以在您的“single_post.xml”文件中添加“ProgressBar”小部件,然后在您的 ViewHolder 类(PostViewHolder)上进行引用,然后最后一步是在“onBindViewHolder”方法中更改您的 Glide 代码。

single_post.xml

<ProgressBar
    android:id="@+id/imageProgressBar"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:visibility="visible" />

PostViewHolder

ProgressBar imgProgressBar = (ProgressBar) findViewById(R.id.imageProgressBar);

OnBindViewHolder 方法

Glide.with(requireContext())
       .load(model.getPostimage())
       .listener(new RequestListener<Drawable>() {
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                holder.imgProgressBar.setVisibility(View.GONE);
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                holder.imgProgressBar.setVisibility(View.GONE);
                return false;
            }
        })
       .error(R.drawable.error_uom)
       .placeholder(R.drawable.ic_account)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM