首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从NetworkImageView获取位图?

如何从NetworkImageView获取位图?
EN

Stack Overflow用户
提问于 2016-04-03 01:24:17
回答 1查看 719关注 0票数 0

在我的项目中,我使用(Volley + NetworkImageView)下载一些图像和文本,并将它们显示在列表视图中。在这之前,我没有任何问题。

现在,我想从NetworkImageView中获取位图,我尝试了许多方法,比如下面的方法,但是它们都不适合我。

代码语言:javascript
复制
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();

另一种方法:

代码语言:javascript
复制
imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();

他们都不工作..。

任何帮助都是感激的,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-03 01:55:15

无法获取位图引用,因为它从未保存在ImageView中。但是,您可以使用:

代码语言:javascript
复制
((BitmapDrawable)this.getDrawable()).getBitmap();

因为当你用截击设置它时,你可以这样做:

代码语言:javascript
复制
/**
 * Sets a Bitmap as the content of this ImageView.
 * 
 * @param bm The bitmap to set
 */
@android.view.RemotableViewMethod
public void setImageBitmap(Bitmap bm) {
    // Hacky fix to force setImageDrawable to do a full setImageDrawable
    // instead of doing an object reference comparison
    mDrawable = null;
    if (mRecycleableBitmapDrawable == null) {
        mRecycleableBitmapDrawable = new ImageViewBitmapDrawable(
                mContext.getResources(), bm);
    } else {
        mRecycleableBitmapDrawable.setBitmap(bm);
    }
    setImageDrawable(mRecycleableBitmapDrawable);
}

但是,如果以任何其他方式设置默认图像或错误图像或任何其他图像,则可能不会获得BitmapDrawable,而是NinePatchDrawable。

以下是如何检查:

代码语言:javascript
复制
Drawable dd = image.getDrawable();
    if(BitmapDrawable.class.isAssignableFrom(dd.getClass())) {
        //good one
        Bitmap bb = ((BitmapDrawable)dd).getBitmap();
    } else {
        //cannot get that one
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36380638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档