美文网首页
android Glide 在fragment出现第一次加载模

android Glide 在fragment出现第一次加载模

作者: JasonChen8888 | 来源:发表于2019-10-16 15:38 被阅读0次

背景:

 近期在公司开发中,项目开发中,出现了,在viewpager 中嵌套fragment中,glide加图片出现第一次加载的时候出现模糊的想象。

修改前:

展示代码:

@Override
   public View getView(int position, View convertView, ViewGroup parent) {
       ImageView imageView = new ImageView(mContext);
       imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
       ImageLoaderHelper.getInstance().displayChatGroupImage(mContext, imageView, data.get(position), R.drawable.bg_chat_group_default, 5);
       return imageView;
   }
@Override
    public void displayChatGroupImage(Context context, ImageView imageView, String url, int defaultImageResId, int radius) {
        Glide.with(context)
                .load(getChatGroupGlideUrl(url))
                .transform(new CenterCrop(context), new RoundTransform(context, radius))
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .placeholder(defaultImageResId)
                .into(imageView);
    }

为了达到居中并截取显示,默认Imageview显示都是正常,但是却是在第一次加载的时候出现了模糊,一直以为是缓存策略的问题,但是防线加了diskCacheStrategy(DiskCacheStrategy.ALL)也是没有效果的,后面才发现,缓存策略使用的是缓存所有,但是默认第一次显示是加载的是原图没有错,但是因为没有设置图片控件的具体宽度和高度,导致了第一次加载显示的是图片左上角的大图,

修正后:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new ImageView(mContext);
        ViewGroup.LayoutParams params = null;
        if (isNormalSize) {
            params = new ViewGroup.LayoutParams(normalSize, normalSize);
        } else {
            params = new ViewGroup.LayoutParams(bigSize, normalSize);
        }
        imageView.setLayoutParams(params);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        ImageLoaderHelper.getInstance().displayChatGroupImage(mContext, imageView, data.get(position), R.drawable.bg_chat_group_default, 5);
        return imageView;
    }

这样在第一次加载的时候就可以正常的展示出要的效果

相关文章

网友评论

      本文标题:android Glide 在fragment出现第一次加载模

      本文链接:https://www.haomeiwen.com/subject/ebzlvftx.html