在我的项目中,我使用(Volley + NetworkImageView)下载一些图像和文本,并将它们显示在列表视图中。在这之前,我没有任何问题。
现在,我想从NetworkImageView中获取位图,我尝试了许多方法,比如下面的方法,但是它们都不适合我。
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();另一种方法:
imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();他们都不工作..。
任何帮助都是感激的,
发布于 2016-04-03 01:55:15
无法获取位图引用,因为它从未保存在ImageView中。但是,您可以使用:
((BitmapDrawable)this.getDrawable()).getBitmap();因为当你用截击设置它时,你可以这样做:
/**
* 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。
以下是如何检查:
Drawable dd = image.getDrawable();
if(BitmapDrawable.class.isAssignableFrom(dd.getClass())) {
//good one
Bitmap bb = ((BitmapDrawable)dd).getBitmap();
} else {
//cannot get that one
}https://stackoverflow.com/questions/36380638
复制相似问题