当前位置:  开发笔记 > Android > 正文

加载图像后测量ImageView

如何解决《加载图像后测量ImageView》经验,为你挑选了1个好方法。

我试图找到一种方法来衡量一个ImageView图像后使用Glide或Picasso(或任何真正的东西)加载到它.基本上,我试图在某些位置在图像顶部布局其他视图,但需要最终的ImageViews尺寸才能准确地完成.

我不知道用于尝试这样做的最佳布局是什么,但我目前正在使用这个:


        
    

并将图像加载到viewingImageView.这些都在根FrameLayout内部,但我不认为这很重要.

这是我最近的尝试,但是作为评论,使用.getWidth().getHeight()在ImageView上返回0.资源的宽度/高度返回原始图像的大小.

滑行

.with(this)
.load(entry.getImageUrl())
.asBitmap()
.into(new SimpleTarget() {
    @Override
    public void onResourceReady(Bitmap resource, GlideAnimation 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.我对任何解决方案持开放态度,以上只是我迄今为止所尝试的内容.



1> Marko..:

你应该等待绘制视图,你可以OnGlobalLayoutListener像这样使用

ViewTreeObserver vto = mImageView.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
        this.mImageView.getViewTreeObserver().removeGlobalOnLayoutListener(this); 

        // Get the width and height
        int width  = mImageView.getMeasuredWidth();
        int height = mImageView.getMeasuredHeight(); 
    } 
});

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有