Maxgmer Asked:2020-09-28 23:00:15 +0800 CST2020-09-28 23:00:15 +0800 CST 2020-09-28 23:00:15 +0800 CST CardView获取图片大小的方法 772 在我的应用程序中,我使用带有图片的 CardView 元素进行了活动。事实上,这些图片的分辨率非常高。为了有效地将图像加载到内存中,我需要将它们的分辨率降低到 CardView 在某些设备上的分辨率。如何以编程方式找出 CardView 中图像的大小? android 2 个回答 Voted Maxgmer 2020-09-28T23:21:53+08:002020-09-28T23:21:53+08:00 发现一件有意思的事,就决定在这里答一下,突然有人就派上用场了。 通用图像加载器。 底线是 UIL 将图像的大小精确调整为图像容器的大小。这是链接https://github.com/nostra13/Android-Universal-Image-Loader Best Answer Shwarz Andrei 2020-09-28T23:58:35+08:002020-09-28T23:58:35+08:00 获取容器大小(px) cardView.getMeasuredWidth()- 宽度 cardView.getMeasuredHeight()- 高度 从网上下载一张图片: Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 尺寸变化: public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) { int width = bm.getWidth(); int height = bm.getHeight(); float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); return Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false); } 我们一起使用所有东西,加载后: img_1.setImageBitmap(getResizedBitmap(bitmap, cardView.getMeasuredHeight(), cardView.getMeasuredWidth())); 大多数情况下,服务器部分能够提供已经合适的大小和格式的资源,首先对更合适的资源提出正确的请求是有意义的。压缩或解码工作在不同的流中进行是可取的,好吧,这由您决定。这是一个简单的例子,没有使用 lib。
发现一件有意思的事,就决定在这里答一下,突然有人就派上用场了。
底线是 UIL 将图像的大小精确调整为图像容器的大小。这是链接https://github.com/nostra13/Android-Universal-Image-Loader
获取容器大小(px)
cardView.getMeasuredWidth()
- 宽度cardView.getMeasuredHeight()
- 高度从网上下载一张图片:
尺寸变化:
我们一起使用所有东西,加载后:
大多数情况下,服务器部分能够提供已经合适的大小和格式的资源,首先对更合适的资源提出正确的请求是有意义的。压缩或解码工作在不同的流中进行是可取的,好吧,这由您决定。这是一个简单的例子,没有使用 lib。