2014-03-03 20 views
0

我知道这已经要求在这里,但我的问题是有点不同。我阅读了有关这个主题的其他答案,但他们没有解决我的问题。通行证的ImageView到下一个活动 - 安卓

所以在我的应用程序中,我有2个活动。在第一个中,有20个图像浏览(我打算增加更多),而在第二个活动中,有一个自定义视图,它实际上是一个缩放图像类。基本上,当用户在第一次活动时点击任何图像视图时,他将被带到第二个活动,在那里他可以放大该特定图像。

我理想中的编码部分做的是,让所显示的点击的ImageView的图像,并将其传递到下一个活动。为了达到这个目的,我使用了下面给出的代码,但它不起作用。什么可能是错的?

Activity_one

Intent startzoomactivity = new Intent(Activity_one.this, Activity_two.class); 
Bitmap img_res = img.getDrawingCache(); 
Bundle extras = new Bundle(); 
extras.putParcelable("imagebitmap", img_res); 
startzoomactivity.putExtras(extras); 
startActivity(startzoomactivity); 

Activity_two

Intent startzoomactivity = getIntent(); 
Bundle extras = getIntent().getExtras(); 
Bitmap bmp = (Bitmap) extras.getParcelable("imagebitmap"); 

TouchImageView img = new TouchImageView(this); // TouchImageView is the class that enables zoom feature on the imageview. 
img.setImageResource(i); 
img.setMaxZoom(5f); 

回答

2

不能将ImageView的传递到其他活动。视图与他们所属的活动直接相关,不能传递。

你试图在代码中实现的是获取ImageView的图形缓存副本作为位图,即使它使它工作(它缺少view.setDrawingCache),它会给你一个非常不好的结果,特别是放大后。

你需要做的是找到原始图像(如果它来自互联网的URL或磁盘缓存中的位置,如果它来自你的资源文件夹,int resId绘制该图像,并传递此值(字符串或int)到下一个活动,然后让下一个活动创建它自己的ZoomableImageView并设置原始资源(链接,文件,资源)

1

我知道你想什么来实现,但你的方式是完全错误的。而不是传递ImageView位图传递的ImageView的URLPath(如果可拉伸然后ResId),其中此图像来自和传递URLPathResId到下一个活动和当前图像作为一个Bitmap加载到ZoomableImageView