我正在尝试找到一种方法,在使用Glide或Picasso(或任何其他方式)加载图像后,测量
我不确定尝试执行此操作时使用的最佳布局是什么,但我目前正在使用以下布局:
ImageView
的大小。基本上,我正在尝试以特定位置布局其他视图在图像上方,但需要确定最终ImageView
的尺寸才能准确完成此操作。我不确定尝试执行此操作时使用的最佳布局是什么,但我目前正在使用以下布局:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/viewingImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</FrameLayout>
将图片加载到viewingImageView
中。它们都在根FrameLayout中,但我认为这并不重要。
这是我最新的尝试,但是正如注释所述,在ImageView上使用.getWidth()
和.getHeight()
返回0。资源的宽度/高度返回原始图像的大小。
Glide
.with(this)
.load(entry.getImageUrl())
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
mImageView.setImageBitmap(resource);
int width = mImageView.getMaxWidth(); //prints 0
int height = mImageView.getMaxHeight(); //prints 0
int resw = resource.getWidth(); //returns original image width
}
});
那么,如何在图像加载后测量ImageView(或其包装的FrameLayout)?或者如果可能的话,测量最终布局的图像的尺寸会更好,因为我知道根据比例类型,图像并不总是填满整个ImageView。我对任何解决方案都持开放态度,上述只是我迄今为止尝试过的内容。
mImageView.post(new Runnable() { @Override public void run() { int height = mImageView.getMeasuredHeight(); int width = mImageView.getMeasuredWidth(); } });
参见这里。 - HemanthpostDelayed
并等待了一两秒钟。这确实让我得到了ImageView的最终大小,但这种解决方案有点奇怪,因为我需要尽快叠加项目,而不是等待一个定义好的时间段。 - Orbitpost
方法,您无需等待获取大小。post(Runnable)
会将可运行对象添加到消息队列中。该可运行对象将在 UI 线程上运行。 - HemanthmImageView.setImageBitmap(resource);
之后,您是否使用post
获取宽度和高度? - Hemanth