2014-03-03 46 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