Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我的ImageView在图像加载之前出现(使用Glide)? 当我快速浏览我的RealVIEW视图时,我注意到在图像被加载到IVIEVIEW(使用GLIDEE)之前出现了空白图像视图。如果一个图像没有成功加载,我宁愿它只显示一个空的ImageView容器。我不希望显示空的ImageView,除非其中包含加载的图像。。在加载图像之前出现以下空ImageView在视觉上是不愉快的,即使在默认淡入滑动开始之前只有几毫秒:_Android_Imageview_Android Recyclerview_Android Glide - Fatal编程技术网

Android 为什么我的ImageView在图像加载之前出现(使用Glide)? 当我快速浏览我的RealVIEW视图时,我注意到在图像被加载到IVIEVIEW(使用GLIDEE)之前出现了空白图像视图。如果一个图像没有成功加载,我宁愿它只显示一个空的ImageView容器。我不希望显示空的ImageView,除非其中包含加载的图像。。在加载图像之前出现以下空ImageView在视觉上是不愉快的,即使在默认淡入滑动开始之前只有几毫秒:

Android 为什么我的ImageView在图像加载之前出现(使用Glide)? 当我快速浏览我的RealVIEW视图时,我注意到在图像被加载到IVIEVIEW(使用GLIDEE)之前出现了空白图像视图。如果一个图像没有成功加载,我宁愿它只显示一个空的ImageView容器。我不希望显示空的ImageView,除非其中包含加载的图像。。在加载图像之前出现以下空ImageView在视觉上是不愉快的,即使在默认淡入滑动开始之前只有几毫秒:,android,imageview,android-recyclerview,android-glide,Android,Imageview,Android Recyclerview,Android Glide,XML(删除不相关代码) RecyclerAdapter.java public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ItemHolder> { private ArrayList<Item> items; Context context; public RecyclerAdapter(Context context, ArrayList&l

XML(删除不相关代码)


RecyclerAdapter.java

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ItemHolder> {

    private ArrayList<Item> items;
    Context context;


    public RecyclerAdapter(Context context, ArrayList<Item> items) {
        this.items = items;
        this.context = context;
    }


    @Override
    public ItemHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
        Context context = viewGroup.getContext();
        boolean shouldAttachToParentImmediately = false;

        View view = LayoutInflater.from(context).inflate(R.layout.list_row_flyer, viewGroup, shouldAttachToParentImmediately);
        ItemHolder viewHolder = new ItemHolder(view);

        return viewHolder;
    }


    @Override
    public void onBindViewHolder(ItemHolder holder, int position) {
        holder.bind(position);
    }


    class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        LinearLayout itemImageLinearLayout;
        ImageView itemImage;


        public ItemHolder(View view) {
            super(view);

            itemImageLinearLayout = (LinearLayout) view.findViewById(R.id.image_holder_layout);
            this.itemImage = (ImageView) view.findViewById(R.id.flyer_item_image);
        }


        void bind(int listIndex) {
            Glide.with(context)
                    .load(items.get(listIndex).getImageUrl())
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
                    .into(itemImage);
            itemImageLinearLayout.setVisibility(View.VISIBLE);
        }
    }
}
公共类RecyclerAdapter扩展了RecyclerView.Adapter{ 私有ArrayList项; 语境; 公共回收器适配器(上下文、ArrayList项){ 这个项目=项目; this.context=上下文; } @凌驾 public ItemHolder onCreateViewHolder(视图组视图组,int-viewType){ Context=viewGroup.getContext(); 布尔值shouldAttachToparentInstallent=false; 视图=LayoutFlater.from(上下文)。充气(R.layout.list_row_flyer,viewGroup,应立即附加到Oparent); ItemHolder viewHolder=新的ItemHolder(视图); 返回视图持有者; } @凌驾 公共无效onBindViewHolder(ItemHolder,int位置){ 固定器。绑定(位置); } 类ItemHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{ 线性布局项目图像线性布局; 图像查看项目图像; 公共项目持有者(视图){ 超级(视图); itemImageLinearLayout=(LinearLayout)视图.findViewById(R.id.image\u holder\u布局); this.itemImage=(ImageView)view.findViewById(R.id.flyer\u item\u image); } 无效绑定(int-listIndex){ 带(上下文)滑动 .load(items.get(listIndex.getImageUrl()) .diskCacheStrategy(diskCacheStrategy.ALL) .override(Target.SIZE_ORIGINAL,Target.SIZE_ORIGINAL) .进入(项目图像); itemImageLinearLayout.setVisibility(View.VISIBLE); } } }
澄清一下:我不需要滑动淡入动画。如果解决方案更简单,没有褪色,我可以接受。

尝试以下任何选项

  • 从imageView中删除:android:background=“@android:drawable/dialog\u holo\u light\u frame”

  • 尝试为imageView添加占位符。这将在加载实际图像之前添加默认图像

  • 用(这个)滑翔 .load(url) .placeholder(R.drawable.placeholder)
    .进入(图像视图)

    在加载真实图像之前,Glide始终显示空白图像。这是无法避免的。除非你使用另一个库。我从来没有见过这个黑色图像:SUI可能想要缓存请求,所以下次它不会再做另一个请求,而是使用前一个请求的响应,并在第二次用户看到图像时阻止空白屏幕。
    public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ItemHolder> {
    
        private ArrayList<Item> items;
        Context context;
    
    
        public RecyclerAdapter(Context context, ArrayList<Item> items) {
            this.items = items;
            this.context = context;
        }
    
    
        @Override
        public ItemHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
            Context context = viewGroup.getContext();
            boolean shouldAttachToParentImmediately = false;
    
            View view = LayoutInflater.from(context).inflate(R.layout.list_row_flyer, viewGroup, shouldAttachToParentImmediately);
            ItemHolder viewHolder = new ItemHolder(view);
    
            return viewHolder;
        }
    
    
        @Override
        public void onBindViewHolder(ItemHolder holder, int position) {
            holder.bind(position);
        }
    
    
        class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    
            LinearLayout itemImageLinearLayout;
            ImageView itemImage;
    
    
            public ItemHolder(View view) {
                super(view);
    
                itemImageLinearLayout = (LinearLayout) view.findViewById(R.id.image_holder_layout);
                this.itemImage = (ImageView) view.findViewById(R.id.flyer_item_image);
            }
    
    
            void bind(int listIndex) {
                Glide.with(context)
                        .load(items.get(listIndex).getImageUrl())
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
                        .into(itemImage);
                itemImageLinearLayout.setVisibility(View.VISIBLE);
            }
        }
    }