首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何根据从url下载的图片设置表单元格中imageview的动态高度

根据从URL下载的图片设置表单元格中ImageView的动态高度,可以通过以下步骤实现:

  1. 首先,使用网络请求库(如OkHttp、Volley等)从给定的URL下载图片到本地存储。
  2. 下载完成后,使用图片处理库(如Picasso、Glide等)加载本地图片文件到ImageView中。
  3. 在加载图片之前,获取图片的宽度和高度信息。
  4. 根据获取到的图片宽度和高度,动态计算ImageView的高度。
  • 如果你使用的是RecyclerView或ListView等可滚动的列表,可以根据图片的宽高比例和列表的宽度来计算ImageView的高度。例如,假设列表的宽度为w,图片的宽度为imgWidth,图片的高度为imgHeight,则ImageView的高度可以计算为:imageViewHeight = (w * imgHeight) / imgWidth。
  • 如果你使用的是固定大小的表单元格,可以根据图片的宽高比例和表单元格的宽度来计算ImageView的高度。例如,假设表单元格的宽度为cellWidth,图片的宽度为imgWidth,图片的高度为imgHeight,则ImageView的高度可以计算为:imageViewHeight = (cellWidth * imgHeight) / imgWidth。
  1. 将计算得到的ImageView的高度应用到ImageView上,使其能够正确显示图片。

以下是一个示例代码片段,演示如何根据从URL下载的图片设置表单元格中ImageView的动态高度:

代码语言:java
复制
// 使用OkHttp进行网络请求和下载图片
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
        .url(imageUrl)
        .build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        // 处理请求失败的情况
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        // 将下载的图片保存到本地存储
        File imageFile = saveImageLocally(response.body().byteStream());

        // 使用Picasso加载本地图片文件到ImageView中
        Picasso.get().load(imageFile).into(imageView, new Callback() {
            @Override
            public void onSuccess() {
                // 获取图片的宽度和高度
                int imgWidth = imageView.getDrawable().getIntrinsicWidth();
                int imgHeight = imageView.getDrawable().getIntrinsicHeight();

                // 根据图片的宽高比例和表单元格的宽度计算ImageView的高度
                int cellWidth = cellView.getWidth();
                int imageViewHeight = (cellWidth * imgHeight) / imgWidth;

                // 将计算得到的ImageView的高度应用到ImageView上
                imageView.getLayoutParams().height = imageViewHeight;
                imageView.requestLayout();
            }

            @Override
            public void onError(Exception e) {
                // 处理加载图片失败的情况
            }
        });
    }
});

请注意,上述示例代码中使用了Picasso库来加载图片,你也可以根据自己的需求选择其他图片处理库。此外,根据具体的开发环境和需求,可能需要进行一些适当的调整和错误处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

问与答98:如何根据单元格中的值动态隐藏指定的行?

excelperfect Q:我有一个工作表,在单元格B1中输入有数值,我想根据这个数值动态隐藏行2至行100。...具体地说,就是在工作表中放置一个命令按钮,如果单元格B1中的数值是10时,当我单击这个命令按钮时,会显示前10行,即第2行至第11行;再次单击该按钮后,隐藏全部的行,即第2行至第100行;再单击该按钮,...则又会显示第2行至第11行,又单击该按钮,隐藏第2行至第100行……也就是说,通过单击该按钮,重复显示第2行至第11行与隐藏第2行至第100行的操作。...图1 如何实现? 注:这是在chandoo.org的论坛上看到的一个贴子,有点意思。...EntireRow.Hidden = False Application.Goto Range("A1"), True b =False End If End Sub 在工作表中放置一个命令按钮

6.4K10
  • DTCoreText的集成与使用目录一、相关资源二、DTCoreText的集成三、DTCoreText的使用四、可能遇到的错误五、参考链接

    但是从Github下载的文件却不能直接使用。起初我是直接从网上其他地方下载打包好的静态库来使用的,但这样会遗漏掉更新。...使用下载的工程可以根据需求修改编译配置,然后运行工程得到适合不同平台的静态库。...,然后就可以很方便的处理响应事件了,其中: //url:Html中的超链接(可以根据需要设置http、tel、mailto等) //identifier:属于该视图的唯一性标识...通过这个单元格类,我们可以方便的设置富文本以及获取单元格高度。以下是使用DTAttributedTextCell显示富文本的核心代码: 3.1....:%d",i]]; } //这里提供的Html图片链接,没有宽高属性,代码中已经演示了如何处理 int k = i % 6;

    4.9K90

    ·第三方网络图片处理框架:SDWebImage(官方文档翻译篇)

    目前,虽然AFNetworking也提供了图片下载及缓存策略,但更专业的时候,图片加载框架一般用SDWebImage,正如主流APP(如QQ和微信)会用到。...,它具有自动缓存到期处理 后台图像解压缩 保证相同的URL不会被下载多次 保证虚假URLs不会重复重试 保证主线程永远不会被阻止 好的性能!...通过从Github下载项目或者使用CocoaPods尝试更简单的方法来尝试这个例子pod try SDWebImage 进入安装步骤 阅读SDWebImage 4.0迁移指南,了解从3.x到4.x的更改...")) 有关如何使用库和清除示例的详细信息,请参阅详细的如何使用 8....常见问题 ---- 9.1 UITableViewCell与使用动态图像的大小尺寸 UITableView根据单元格的第一个图像集,确定图像的大小尺寸。

    3.7K20

    Android瀑布流照片墙实现,体验不规则排列的美感

    每当需要添加一张图片时,会将这张图片的宽度压缩成和列一样宽,再按照同样的压缩比例对图片的高度进行压缩,然后在这三列中找出当前高度最小的一列,将图片添加到这一列中。...* @param bitmap * LruCache的键,这里传入从网络上下载的Bitmap对象。...如果这张图片已经存在于SD卡中,则直接从SD卡里读取,否则就从网络上下载。...然后在LoadImageTask中,首先会先检查一下这张图片是不是已经存在于SD卡中了,如果还没存在,就从网络上下载,然后把这张图片存放在LruCache中。...当这些图片又重新变为可见的时候,只需要再从LruCache中将这些图片重新取出即可。如果某张图片已经从LruCache中被移除了,就会开启一个LoadImageTask,将这张图片重新加载到内存中。

    2.9K50

    使用lrucache和diskLrucache实现照片墙

    给ImageView设置一个Tag,保证异步加载图片时不会乱序         imageView.setTag(url);           imageView.setImageResource...此方法会在LruCache中检查所有屏幕中可见的ImageView的Bitmap对象,      * 如果发现任何一个ImageView的Bitmap对象不在缓存中,就会开启异步线程去下载图片。...Tag找到相应的ImageView控件,将下载好的图片显示出来。             ...接着在getView()方法中,我们为每个ImageView设置了一个唯一的Tag,这个Tag的作用是为了后面能够准确地找回这个ImageView,不然异步加载图片会出现乱序的情况。...首先根据图片的URL生成对应的MD5 key,然后调用DiskLruCache的get()方法来获取硬盘缓存,如果没有获取到的话则从网络上请求图片并写入硬盘缓存,接着将Bitmap对象解析出来并添加到内存缓存当中

    1.6K90

    问题——持续更新

    解决:没有设置代理,方法无法调用 继承自UITableViewController的视图控制器要想自定义单元格要删除系统中的分区代码。 非自定义单元格为什么无法设置黑夜模式??...在表格协议的方法中  return  2  和return  _apps.count 结果不同(表现在单元格的高度上)???...适配问题 怎么根据网络上上的图片确定自己定义的cell的高度以及上面imageView的大小 uilabel  文字置顶??...如何获取全屏图片用于上传   command+S 10.4 新加: 为ViewController添加导航控制器(xcode6中将自动设置为根视图控制器)?...为什么在xib中拖拽imageView的时候,总是会跑出去?     修改数据库中的数据有问题,无法修改?     怎么传递相册中的图片?

    1.3K20

    【Android 控件使用及源码解析】 GridView规则显示图片仿微信朋友圈发图片

    下面说一下自己的思路: 1.获取网络图片 2.初始化gridview,自定义适配器 3.根据图片数量设置gridview的列数 4.更新适配器 下面贴上部分源码并给大家解析一下 一、首先是GridView...大体上也是将图片下载到本地,用Imageloader加载,不过我这里有上传失败的和新建的,所以不太一样。...); noScrollgridview.setAdapter(picAdapter); //根据图片数量设置图片的列 int size = appItemFile.getFiles...GridView的列数为3,根据图片的数量动态设置列数。...ImageView的上部分位置 8)fitXY:把原图按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满ImageView. ok就先这样了,以后我会经常更新博客和大家分享的

    1.2K10

    Android照片墙完整版,完美结合LruCache和DiskLruCache

    此方法会在LruCache中检查所有屏幕中可见的ImageView的Bitmap对象, * 如果发现任何一个ImageView的Bitmap对象不在缓存中,就会开启异步线程去下载图片。...Tag找到相应的ImageView控件,将下载好的图片显示出来。...接着在getView()方法中,我们为每个ImageView设置了一个唯一的Tag,这个Tag的作用是为了后面能够准确地找回这个ImageView,不然异步加载图片会出现乱序的情况。...进入到loadBitmaps()方法中可以看到,实现是调用了getBitmapFromMemoryCache()方法来从内存中获取缓存,如果获取到了则直接调用ImageView的setImageBitmap...首先根据图片的URL生成对应的MD5 key,然后调用DiskLruCache的get()方法来获取硬盘缓存,如果没有获取到的话则从网络上请求图片并写入硬盘缓存,接着将Bitmap对象解析出来并添加到内存缓存当中

    1.5K90

    UITableView性能优化-中级篇

    老实说,UITableView性能优化 这个话题,最经常遇到的还是在面试中,常见的回答例如: Cell复用机制 Cell高度预先计算 缓存Cell高度 圆角切割 等等. . ....:(NSIndexPath *)indexPath去渲染cell,在cell中如果设置loadImage,不会调用; 而当cell进去界面中的时候,再进行cell渲染(无论是init还是从复用池中取)...YYCache中是否有该url,有的话,直接读取缓存图片数据,没有的话,走图片下载逻辑,并缓存图片 问题所在: 如上设置,如果我们cell一行有20行,页面启动的时候,直接滑动到最底部,20个cell...,可以先下载图片,再对图片进行圆角处理,再设置到cell上显示 问:YYWebImage 如何设置圆角?...在下载完成的回调中?如果你在下载完成的时候再切割,此时 YYWebImage 缓存中的图片是初始图片,还是圆角图片?(终于等到3了!!)

    1.6K20

    六天完成一个简单iOS App - 第五天

    可以通过模型拿到,所以给三种类型的View添加模型属性,并在cell中根据类型设置view显示的时候,将模型赋值给view的模型属性,拿到模型属性即可拿到中间图片的url。...视频和音频服务器也提供一张图片供显示,根据服务器返回得图片url赋值给iamgeView即可。 图片的设置稍有些复杂,数据库返回给我们三种图片,小图,中图和原图,我们这里先使用原图。...在View的setTopic方法中设置imageView的图片即可。 其中图片需要添加判断是否为gif图片和是否为长图。...未处理长图显示 图片被压缩填充在ImageView中,此时在判断如果是长图的方法中修改imageView的contentMode即可 // 设置imageView的内容以顶端对齐显示,多余的会被裁剪掉...对图片的长度进行计算,如果长度没有超过一个屏幕大小,则根据屏幕的宽高比计算出图片的高度,居中显示在屏幕中,保证imageView占据整个屏幕的宽度。

    89060

    Android在ImageView上直接显示网络图片

    ImageView中,没有一个方法是可以直接显示网络的图片的,当我们经常需要显示网络图片时,每次都有一大堆的操作,这会很麻烦,今天就教大家在ImageView上轻松显示网络图片。...压缩 这是比较简单的从网络获取照片,直接在ImageView上显示,但是你有没有考虑过如果网络的图片很大,已经超出了手机屏幕的大小,如果还是加载原图的话无疑是浪费内存,还有可能造成内存溢出...(width)); return width; } /** * 获取ImageView实际的高度 * @return 返回ImageView实际的高度...,记得要吧isUseCache设置成true //直接把网络的图片路径写上就可以显示网络的图片了 String url = "https://pic.cnblogs.com...既然那么强大的开源库,我们就简单地了解它是如何使用的,先看看with()方法的源码,它可以接收6中参数,所以在各种情况下都能使用 public static RequestManager with

    6.2K40

    Carson带你学Android:最全面解析图片加载库Glide用法

    设置加载尺寸 Glide.with(this).load(imageUrl).override(800, 800).into(imageView); 设置加载中以及加载失败图片 api里面对placeholder...项目中有很多需要先下载图片然后再做一些合成的功能,比如项目中出现的图文混排,该如何实现目标下 Glide.with(this).load(imageUrl).centerCrop().into(new...主线程中进行 2.2.4 其他设置 生命周期集成 通过设置绑定生命周期,我们可以更加高效的使用Glide提供的方式进行绑定,这样可以更好的让加载图片的请求的生命周期动态管理起来 .with...设置动态转换 Glide.with(this).load(imageUrl).centerCrop().into(imageView); 设置下载优先级 Glide.with(this).load(imageUrl...Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,也就意味着 Glide 会根据你 ImageView 的大小来缓存相应大小的图片尺寸 比如你 ImageView 大小是200200

    88020

    Android图片加载库:最全面解析Glide用法

    设置加载尺寸 Glide.with(this).load(imageUrl).override(800, 800).into(imageView); 设置加载中以及加载失败图片 api里面对placeholder...项目中有很多需要先下载图片然后再做一些合成的功能,比如项目中出现的图文混排,该如何实现目标下 Glide.with(this).load(imageUrl).centerCrop().into(new....asBitmap()//显示gif静态图片 .asGif();//显示gif动态图片 .into(imageView); 2.2.3 关于缓存 设置磁盘缓存策略 Glide.with...设置动态转换 Glide.with(this).load(imageUrl).centerCrop().into(imageView); 设置下载优先级 Glide.with(this).load(imageUrl...Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,也就意味着 Glide 会根据你 ImageView 的大小来缓存相应大小的图片尺寸 比如你 ImageView 大小是200

    3.5K10

    iOS中播放gif动态图的方式探讨 原

    iOS中播放gif动态图的方式探讨 一、引言     在iOS开发中,UIImageView类专门来负责图片数据的渲染,并且UIImageView也有帧动画的方法来播放一组图片,但是对于gif类型的数据...,UIImageView中并没有现成的接口提供给开发者使用,在iOS中一般可以通过两种方式来播放gif动态图,一种方式是通过ImageIO框架中的方法将gif文件中的数据进行解析,再使用coreAnimation...二、为原生的UIImageView添加类别来支持gif动态图的播放      gif动态图文件中包含了一组图片及其信息,信息主要记录着每一帧图片播放的时间,我们如果获取到了gif文件中所有的图片同时又获取到每一帧图片播放的时间...    经过测试,从加载速度上来说,通过UIImageView类别加载的方式更加快速,UIWebView的方式加载时间会稍长,但是从性能上来比较,WebView的方式性能更优,播放的gif动态图更加流畅...在开发中,可以根据需求,适当选择,例如虽然WebView加载的方式性能更好,但是在许多情况下,原生的UIImageView能够更加自由的让开发者进行扩展。

    1.9K20

    Android 天气APP(二十九)壁纸设置、图片查看、图片保存

    因为我要使用瀑布流,哪种错落感,会给用户不一样的体验,因为不设置高度,是因为需要动态设置ImageView的高度,来实现这个错落感。OK,下面该写这个Adapter了。...= dip2px(mHeightList.get(helper.getAdapterPosition())); //重新设置imageView的高度 imageView.setLayoutParams...int digree = 0;//图片旋转的角度 //根据图片的URI获取图片的绝对路径 Log.i("tag", ">>>>>>>>>>>>>开始");...float hh = 800f;//这里设置高度为800f float ww = 480f;//这里设置宽度为480f //缩放比。...然后查询数据库中的壁纸表,移除掉ImgUrl为 “”的数据,因为这个数据是我手动加上去的,然后就是设置适配器给ViewPager2,滑动的时候获取选中页的图片地址,并将地址转成bitmap,然后当你点击底部的下载壁纸的时候

    1.5K50

    iOS 图片渐进式下载

    言归正传,先来解释下,为什么你从百度随便弄一张图的链接放上去,但没有渐进式的下载效果。 实际上这和图片的格式支持有关。...也就是看起来是一行一行的下载绘制,细心的同学会发现,YYWebImage里面就有这样的下载设置,代码如下: [imageView yy_setImageWithURL:url options:YYWebImageOptionProgressive...效果最上面大家已经看过了,这种技术被广泛应用于大图的下载显示上。 渐进式图片的一些小缺点:最初绘制的模糊图片,实际上与原图的大小有相差、这种绘制更加消耗CPU... 那么,这种图片如何制作呢?...这样美观的渐进式下载,我如何实现呢?...有兴趣的同学可以去我GitHub下载这个Demo 既然说了这个图片下载,还有个动态图加载图片跟大家分享一下。

    1.5K40

    【IOS开发基础系列】Storyboard专题

    在以前,如果你要定制表视图单元格,你要么在代码中向cell对象添加自己的 subviews ,要么新建一个 nib 然后从nib 中加载你自己的 cell。...但模板 cells 的出现简化了这一切,现在你可以直接在故事板编辑器中设计你自己的表视图单元格。...但我想在单元格右边加一张图片以显示玩家级别(以星级的形式)。UITableViewCell的标准样式中不包含可以在单元格中放入一个ImageView,因此我只能选择定制设计。         ...设置它的Mode 为 Center(在属性面板的 View 下面)以便当我们将图片放入时它不会被拉伸。         我将俩个 label 的宽度设置为210,这样不会遮住ImageView。...通过 AutoLayout 可以实现运行时根据设备实际屏幕大小调整控件位置和大小。 4.2 代码实例化故事板中的VC 如何装载Storyboard中的ViewController?

    1.3K30

    RunLoop总结:RunLoop的应用场景(三)滚动视图流畅性优化

    下面就拿UITableView来举例说明: UITableView 的 cell 上显示网络图片,一般需要两步,第一步下载网络图片;第二步,将网络图片设置到UIImageView上。...下面举例说明: 1.在主线程中做耗时操作 耗时操作,包括从网络下载、从网络加载、从本地数据库读取数据、从本地文件中读取大量数据、往本地文件中写入数据等。...(这一点,相信大家都知道,要尽量避免在主线程中执行,一般都是创建一个子线程来执行,然后再回到主线程) 2.动态计算UITableViewCell的高度,时间过久 在iOS7之前,每一个Cell的高度,...关于这一点,我以前的做法是在Cell中定义一个public方法,用来计算Cell高度,然后计算完高度后,将高度存储在Cell对应的Model中(Model里定义一个属性来存高度),然后在渲染Cell时,...我们依然需要动态计算各个子视图的高度。

    2.2K41

    iOS 图片加载框架SDWebImage详解

    使用回调 blocks 在 block 中得到图片下载进度和图片加载完成(下载完成或者读取缓存)的回调,如果你在图片加载完成前取消了请求操作,就不会收到成功或失败的回调 [cell.imageView...自定义缓存 key 有时候,一张图片的 URL 中的一部分可能是动态变化的(比如获取权限上的限制),所以我们只需要把 URL 中不变的部分作为缓存用的 key。...:使用 UITableViewCell 中的 imageView 加载不同尺寸的网络图片时会出现尺寸缩放问题。...问题 2:图片刷新问题:SDWebImage 在进行缓存时忽略了所有服务器返回的 caching control 设置,并且在缓存时没有做时间限制,这也就意味着图片 URL 必须是静态的了,要求服务器上一个...问题 3:在加载图片时,如何添加默认的 progress indicator ?

    2.6K10
    领券