ListView加载网络图片--------闪图问题解决
来源:互联网 发布:mac自带的编译器在哪 编辑:程序博客网 时间:2024/04/30 20:35
ListView解决网络图片闪图问题
闪图问题根本原因是网络图片还没缓存下来就呈现,出现异步错误。
解决的方法也就是让网络图片先缓存下来,然后再呈现出来
一种方法是导入一个SmartImageView类库,然后调用setImageUrl(url)方法
holder.mIvHead.setImageUrl(user.headImg);
url参数是一个字符串路径
具体代码
public View getView(int position, View view, ViewGroup parent) {ViewHolder holder = null;if (view == null) {view = View.inflate(context, R.layout.msg_list_item, null);holder = new ViewHolder();holder.mIvHead = (SmartImageView) view.findViewById(R.id.ivHead);holder.mTvName = (TextView) view.findViewById(R.id.tvName);view.setTag(holder);} else {holder = (ViewHolder) view.getTag();}User user = userList.get(position);holder.mTvName.setText(user.name);holder.mIvHead.setImageUrl(user.headImg);return view;}
另一种方法是添加一个Picasso jar包
加上一句代码
Picasso.with(context).load(user.headImg).into(holder.mIvHead);
具体代码
public View getView(int position, View view, ViewGroup parent) {ViewHolder holder = null;if (view == null) {view = View.inflate(context, R.layout.msg_list_item, null);holder = new ViewHolder();holder.mIvHead = (ImageView) view.findViewById(R.id.ivHead);holder.mTvName = (TextView) view.findViewById(R.id.tvName);view.setTag(holder);} else {holder = (ViewHolder) view.getTag();}// TextView mTvName = (TextView) view.findViewById(R.id.tvName);// mIvHead = (ImageView) view.findViewById(R.id.ivHead);User user = userList.get(position);holder.mTvName.setText(user.name);Picasso.with(context).load(user.headImg).into(holder.mIvHead);return view;}
以上两种问题都可以解决闪图问题,或者自己写,先把图片缓存下来,然后再做呈现工作。
第一次获得的网络请求的图片写到内存中去
public static Bitmap getImageHttpClientGet(String path) throws Exception{// 缓存// ? 本地有没有? /aaaa.jpgString localPath = CommonApplication.context.getCacheDir().getPath()+ "/" + UUID.nameUUIDFromBytes(path.getBytes()).toString();File file = new File(localPath);if (file.exists()){FileInputStream fileInputStream = new FileInputStream(file);return BitmapFactory.decodeStream(fileInputStream);} else{// 抽象类HttpClient client = new DefaultHttpClient();// 参数编码// path = URLEncoder.encode(path);// 创建请求 httpHttpGet httpGet = new HttpGet(path);HttpResponse response = client.execute(httpGet);int statusCode = response.getStatusLine().getStatusCode();if (statusCode == 200){HttpEntity entity = response.getEntity();InputStream in = entity.getContent();byte[] bytes = StreamUtil.getBytesByInputStream(in, localPath);Bitmap decodeByteArray = BitmapFactory.decodeByteArray(bytes,0, bytes.length);return decodeByteArray;}}return null;}
2 0
- ListView加载网络图片--------闪图问题解决
- 使用ListView加载网络图片
- listview 异步加载 网络图片
- Android之ListView图片加载错位问题解决
- ListView异步加载图片--图片缓存和错位问题解决方案
- ListView异步加载图片--图片缓存和错位问题解决方案
- android listview 中从网络加载图片
- Android ListView异步加载网络图片显示
- Android Listview异步动态加载网络图片
- Android ListView异步加载网络图片
- listview,gridview 动态加载网络图片
- Android ListView加载网络数据和图片
- ListView加载网络数据和图片
- 从网络异步加载listView中图片
- 优化ListView中的网络图片加载
- ListView加载网络图片的优化
- ListView加载网络数据和图片
- Android ListView异步加载网络图片
- Windows下mock环境搭建-加速项目Api开发
- NYOJ-93 汉诺塔(三)(栈)
- 我在淘宝卖织梦源码的日子
- golang中strings包函数示例
- Child liSi = Child.CopyFrom(zhangSan);
- ListView加载网络图片--------闪图问题解决
- NDK开发系列之第三课C语言的指针运算
- zTree v3.2 API 文档
- 自定义view基础:TypedArray(属性样式)
- 重修Java——面向对象
- 博客篇首
- LeetCode-Spiral Matrix
- StringBuffer和StringBuilder的区别
- 启动虚拟机时提示我已移动或我已复制选项的详解