基于xUtils3的在listview中加载长图
来源:互联网 发布:淘宝店铺怎么注销关闭 编辑:程序博客网 时间:2024/06/05 05:44
因项目中使用的工具是xUtils3,在listview中加载长图的时候,用的xUtils3的方法API
方法:原理是:得到图片的宽高,然后根据宽高比,计算比例,如果认为是长图,就转成bitmap,进行裁剪,然后展示。这里没有使用BitmapFactory.Options的原因是,通过xUtils3,加载到的图片result,它的方法里得不到它的存放路径,但是可以直接获取到宽高。
/** * 处理长图 * @param iv 要展示图片的控件 * @param urlpath 要处理图片的Url */ private void dealWithLongImage(final ImageView iv,final String urlpath){ ImageOptions imageOptions = new ImageOptions.Builder() .setIgnoreGif(true)// .setImageScaleType(ImageView.ScaleType.CENTER_CROP) .setFailureDrawableId(R.mipmap.loadfailed) .setLoadingDrawableId(R.mipmap.loading) .setUseMemCache(true) .build(); x.image().loadDrawable(urlpath, imageOptions, new Callback.CommonCallback<Drawable>() { @Override public void onSuccess(Drawable result) { try{ int heigth = result.getIntrinsicHeight(); int width = result.getIntrinsicWidth(); LogUtils.i("width---"+width); LogUtils.i("heigth---"+heigth); //用于模拟崩溃异常// int x=1/0;// LogUtils.i("----x----"+x); if (heigth != 0 && width != 0) { if (heigth / width >= 3) { //高度远大于宽度 BitmapDrawable bd = (BitmapDrawable) result; Bitmap bm = bd.getBitmap(); Bitmap mBitmap = Bitmap.createBitmap(bm, 0, 0, width, (int)(width*1.5)); iv.setImageBitmap(mBitmap); }else if(width / heigth >= 3){ //宽度远大于 BitmapDrawable bd = (BitmapDrawable) result; Bitmap bm = bd.getBitmap(); Bitmap mBitmap = Bitmap.createBitmap(bm, 0, 0, (int)(heigth*1.5), heigth); iv.setImageBitmap(mBitmap); } else{ iv.setImageDrawable(result);// BitmapHelper.display(iv, urlpath); } }else{ iv.setImageDrawable(result);// BitmapHelper.display(iv, urlpath); } }catch (Exception e) { e.printStackTrace(); BitmapHelper.display(iv, urlpath); } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); }
最后,在listview的getItemView中,调用方法dealWithLongImage(iv, urlpath);
注:这里访问网络是异步加载,想在工具类中创建该方法,然后返回处理好的bitmap直接用ImageView加载,是不可行的。所以,需要在使用的当前文件中创建
0 0
- 基于xUtils3的在listview中加载长图
- 在VB的ListView中动态加载记录
- 在VB的ListView中动态加载记录
- 关于在listView中加载不同的条目
- 在activity中获取xml中的基于数组的listView
- xUtils3中ImageOptions的使用
- 在ListView中实现异步加载
- 在ListView中实现异步加载
- 在listview中,实现_分页加载_异步加载
- listview中item的长按事件问题
- xUtils3中对Sqlite数据库的操作
- xUtils3中对Sqlite数据库的操作
- xUtils3.0中DbUtils的使用
- xUtils3中对Sqlite数据库的操作
- xutils3图片加载详解
- 到底应该如何在VB的ListView中动态加载数据库中的大量记录?
- universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
- universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
- 解决linux不能连外网
- ios学习--单例实现的几种方式
- eigen相关
- SVN使用教程之-分支/标记 合并 subeclipse
- extern "C"的作用
- 基于xUtils3的在listview中加载长图
- 获取文件夹内文件名称
- 柴俊理金:6、1现货黄金,宁贵沥青操作建议
- extjs
- WSGI简介
- [leetcode] 【链表】 61. Rotate List
- HTTP 错误 404.3—Not Found
- 同步注意事项(1)避免过度同步
- Android 系统状态栏沉浸式/透明化完整解决方案