Glide--在listview中加载高度不固定图片,加载刷新图片跳动解决


 Glide--在listview中加载高度不固定图片,加载刷新图片跳动


昨天项目中用了Glide来显示高度不固定的图片,加载更多调用notifyDataSetChanged这个方法时候,图片已加载过得会闪烁一下,


但是又测试了,Glide显示高度固定的图片时候,加载更多不会出现闪烁,但是问题来了,为啥高度不固定的时候会闪烁呢,应该跟图片高度不同有关,在更新listview时候,会去重新计算listview高度,绘制item,不同高度图片会重新计算.


解决办法如下,先看下如何动态显示不同高度图片问题

 @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final Jitang dataBean = itemlist.get(position);
        final ViewHolder2 holder;
        if (convertView == null) {
            holder = new ViewHolder2();
            convertView = LayoutInflater.from(context).inflate(R.layout.item_jitang_layout,
                    null);
            holder.title = (TextView) convertView.findViewById(R.id.tv_title);
            holder.img = (ImageView) convertView.findViewById(R.id.img_pic);
        
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder2) convertView.getTag();
        }
        holder.title.setText(dataBean.getContent());
        //这部分显示高度不同图片, 
        String width = dataBean.getWidth(); 
        String height = dataBean.getHeight();
        ViewGroup.LayoutParams lp = holder.img.getLayoutParams();
        lp.width = mWidth;
        lp.height = (mWidth * Integer.parseInt(height) / Integer.parseInt(width));
        holder.img.setLayoutParams(lp);
        
       if(!dataBean.getUrl().equals(holder.img.getTag())){
            Glide.with(context)
                    .load(dataBean.getUrl())
                    .placeholder(R.color.text_white)
                    .error(R.color.text_white)
                    .crossFade()
                    .into(holder.img);
        }

 动态设置显示不同图片,不要把ImageView 高度写死了,要wrap_content 

解决图片加载不闪烁的问题,,可以在加载时候,对于已经加载过的item,  采用比对tag方式判断是否需要重新计算高度

 if(!dataBean.getUrl().equals(holder.img.getTag(R.id.jitangimg))){
            Glide.with(context)
                    .load(dataBean.getUrl())
                    .placeholder(R.color.text_white)
                    .error(R.color.text_white)
                    .crossFade()
                    .into(holder.img);
            holder.img.setTag(R.id.jitangimg,dataBean.getUrl());
        }
 

以上就可以解决了 高度不固定闪烁现象,对于 ImageLoader 也可以采用这种方式解决。。








评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值