Android-将图像传递给其他活动,调整大小并保持质量



我有一个列表视图,从json中获取新闻缩略图和标题。我想通过点击列表查看项目在其他活动中显示新闻正文和更大的图像。下面的代码将图像发送到其他活动。

secilenresim= (ImageView)view.findViewById(R.id.mansetresim);                       
secilenresim.buildDrawingCache();
Bitmap image= secilenresim.getDrawingCache();                       
Bundle extras = new Bundle();
extras.putParcelable("imagebitmap", image); 
//// the code below gets the image in new activity
haberresim=(ImageView)findViewById(R.id.haberresim);
haberresim.getLayoutParams().height = 300; 
haberresim.getLayoutParams().width = 400;
Bundle extras = getIntent().getExtras();
Bitmap bmp = (Bitmap) extras.getParcelable("imagebitmap");
haberresim.setImageBitmap(bmp);

一切都很好。但是新活动中的图像质量太差。而图像源(来自json,由picasso库加载)很好,图像分辨率为600*400像素。如何将图像传递给其他活动并保持质量?

如果您使用picasso,则会下载一次图像,然后将其保存在内存甚至磁盘缓存中。因此,您不必通过捆绑包传递位图,而只需从JSON中传递位图的URL。

在"详细信息活动"中,您可以再次通过picasso请求更大的imageView的图像。

如果您启用picasso调试标志:,您可以检查您的图像是否从缓存或网络加载

picasso.setDebugging(true)

getDrawingCache()可能正在获取低质量的图像。

更改用途:

secilenresim.setDrawingCacheQuality(DRAWING_CACHE_QUALITY_HIGH);

你可以用getDrawingCacheQuality()检查你的质量。它可以是其中之一:

  • DRAWING_CACHE_QUALITY_AUTO
  • DRAWING_CACHE_QUALITY_LOW
  • DRAWING_CACHE_QUALITY_HIGH

编辑:

似乎secilenresim.destroyDrawingCache();在构建之前也可能对有帮助

相关内容

  • 没有找到相关文章

最新更新