在listview中使用Glide加载图片,界面跳动?
现在项目做的一个聊天软件,聊天的图片使用glide加载
图片的缩略图以Base64形式保存在数据库中
具体我的使用方式是:
//避免gif内存泄漏 if (null != gif_iv){ Drawable d = gif_iv.getDrawable(); if (d instanceof GifDrawable) { ((GifDrawable) d).recycle(); } } String miniMapStr_Base64 = ""; if (message.getMessageType() == MessageType.IMAGE) { ImageFileInfo imageFileInfo = (ImageFileInfo) message.getFileInfo(); miniMapStr_Base64 = imageFileInfo.getMiniMap(); } else { VideoFileInfo imageFileInfo = (VideoFileInfo) message.getFileInfo(); miniMapStr_Base64 = imageFileInfo.getMiniMap(); } byte[] bytes = Base64.decode(miniMapStr_Base64, Base64.NO_WRAP); if (bytes == null) { return false; } if (message.getMessageType() == MessageType.IMAGE){ String fileName = fileFolder + message.getMessageId(); if (!TextUtils.isEmpty(message.getFileInfo().getFileExt())){ fileName += "." + message.getFileInfo().getFileExt(); } File file = new File(fileName); if (file.exists()){//文件已经下载、解密过 if (message.getFileInfo().getFileExt().equalsIgnoreCase("gif")){ try { GifDrawable gifDrawable = new GifDrawable(fileName); gifDrawable.start(); gif_iv.setImageDrawable(gifDrawable); } catch (IOException e) { e.printStackTrace(); } }else {//普通图片依然展示缩略图 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeByteArray(bytes, 0, bytes.length,options); Glide.with(activity).load(bytes).override(options.outWidth,options.outHeight).into(iv); } }else {//图片不存在,就直接下载 if (message.getFileInfo().getFileExt().equalsIgnoreCase("gif")){ Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); gif_iv.setImageBitmap(bitmap); }else { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeByteArray(bytes, 0, bytes.length,options); Glide.with(activity).load(bytes).override(options.outWidth,options.outHeight).into(iv); } /////下载、解密 } }else { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeByteArray(bytes, 0, bytes.length,options); Glide.with(activity).load(bytes).override(options.outWidth,options.outHeight).into(iv); } return true;XML 关键代码:
<FrameLayout android:id="@+id/fl_pic_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="@dimen/padding_40" android:layout_marginRight="@dimen/padding_8" android:layout_toLeftOf="@id/iv_userhead" android:background="@drawable/chatto_bg" android:paddingLeft="@dimen/padding_4" android:paddingTop="@dimen/padding_4" android:paddingRight="@dimen/padding_8" android:paddingBottom="@dimen/padding_4" android:layout_marginLeft="@dimen/padding_8"> <pl.droidsonroids.gif.GifImageView 显示普通图片 android:id="@+id/iv_sendPicture" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxWidth="@dimen/chat_img_max_width" android:adjustViewBounds="true" android:scaleType="fitCenter" android:layout_gravity="center"/> <pl.droidsonroids.gif.GifImageView 显示gif android:id="@+id/iv_sendPicture_gif" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxWidth="@dimen/chat_gif_max_width" android:adjustViewBounds="true" android:scaleType="fitCenter" android:layout_gravity="center" android:visibility="gone"/> <common.view.CircleProgressBar android:id="@+id/progressBar" android:layout_width="@dimen/padding_32" android:layout_height="@dimen/padding_32" android:layout_gravity="center" android:visibility="invisible" /> </FrameLayout>
在聊天界面滑动时 图片会跳动,从第一个直接跳到第三个 等等
求教 这是什么原因?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
http://blog.csdn.net/xiabing082/article/details/52561428
要是加载更多高度不固定的图片闪烁的话,可以看看,
Glide will use the size of the ImageView to limit the size of the image 我们没使用Glide,只是生成了一个size、质量都很小的缩略图,直接使用Image的
引用来自“qichuan”的评论
可能是Glide库本身的问题,可以考虑使用Fresco https://github.com/facebook/fresco,我在我的项目里使用Fresco加载gif,没有这个问题。
引用来自“qichuan”的评论
可能是Glide库本身的问题,可以考虑使用Fresco https://github.com/facebook/fresco,我在我的项目里使用Fresco加载gif,没有这个问题。
可能是Glide库本身的问题,可以考虑使用Fresco https://github.com/facebook/fresco,我在我的项目里使用Fresco加载gif,没有这个问题。