我有一个listview,从json获取新闻缩略图和标题。 我想通过点击listview项目在其他活动中显示新闻正文和更大的图像。下面的代码将图像发送到其他活动。
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并由毕加索库加载)很好,图像分辨率为600 * 400像素。如何将图像传递给其他活动并保持质量?
答案 0 :(得分:0)
如果您使用毕加索,您的图像会下载一次,然后保存在内存中,甚至是光盘缓存。因此,您不必通过bundle传递位图,而只需通过JSON传递位图。
在您的详情活动中,您可以再次通过毕加索请求更大的图像查看图像。
如果启用了picasso debug标志,您可以检查图像是从缓存还是网络加载的:
picasso.setDebugging(true)
答案 1 :(得分:0)
getDrawingCache()
可能会获得低质量的图像。
改变它的使用:
secilenresim.setDrawingCacheQuality(DRAWING_CACHE_QUALITY_HIGH);
您可以使用getDrawingCacheQuality()
检查您的质量。它可以是其中之一:
修改强>
在构建它之前似乎secilenresim.destroyDrawingCache();
可能也很有帮助