Android 为什么我的ImageView在图像加载之前出现(使用Glide)? 当我快速浏览我的RealVIEW视图时,我注意到在图像被加载到IVIEVIEW(使用GLIDEE)之前出现了空白图像视图。如果一个图像没有成功加载,我宁愿它只显示一个空的ImageView容器。我不希望显示空的ImageView,除非其中包含加载的图像。。在加载图像之前出现以下空ImageView在视觉上是不愉快的,即使在默认淡入滑动开始之前只有几毫秒:
XML(删除不相关代码)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
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);
}
}
}
澄清一下:我不需要滑动淡入动画。如果解决方案更简单,没有褪色,我可以接受。尝试以下任何选项
.进入(图像视图) 在加载真实图像之前,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);
}
}
}