2016-02-29 36 views
0

我想顯示圖像,並允許捏縮放。我的應用程序是一個空白的活動,帶有一個線性佈局,上面有ImageView,下面有一些按鈕的水平線性佈局。 我曾經嘗試都 PhotoViewTouchImageView 他們都有類似的問題:android捏合縮放庫的問題PhotoView和TouchImageView上的肖像圖像

  1. 右側工具欄菜單不響應觸摸(4.4.4和4.4.2)。 它似乎在5.0.2迴應。
  2. 以縱向模式拍攝的照片不能正確顯示或縮放:它們只使用ImageView的一部分。

我已經看過從TouchImageView代碼,並認爲我可以看到答案的問題2:程序獲得的寬度和高度從如下代碼:

float w = getDrawable().getIntrinsicWidth(); 

要正確顯示肖像模式照片在我的應用程序,我需要做這個

imageRotation = getOrientation(photoFilePath); 
imgView.setRotation(imageRotation); 

這旋轉照片顯示,但intrinsicWidth和intrinsicHeight不會改變。所以縮放軟件的尺寸是錯誤的。奇怪的是,這還沒有被抓到過。 (也許這是我的錯誤。) 如果我是正確的,那麼我需要更改代碼,以便測試imgView.ROTATION屬性。

編輯:我可以檢測旋轉,然後在縱向模式圖像中切換高度和寬度。這有點幫助,但還不夠。 imageview中仍有未使用的空白區域。需要更多的工作,這超出了我的技能。

感謝您的任何幫助。

+0

我使用的是https://github.com/davemorrissey/subsampling-scale-image-view。試一試!這很棒,唯一的缺點是你需要實現像隱藏工具欄這樣的事情,但這並不困難。 – tim687

+0

嗨。我從文件讀取圖像,獲取位圖,然後修改位圖並顯示該圖像。我可以使用這個庫來顯示位圖嗎? –

+0

是的,你可以,但是我現在正在使用位圖來進行一些操作:使用位於內存中的位圖時,圖像的縮放和拖動速度會明顯變慢。我建議你先保存編輯後的圖像,然後用這個庫顯示它。 – tim687

回答

0

我花了一段時間才弄清楚這一點。我的問題是我如何旋轉肖像圖像,讓他們進入正確的方向在屏幕上。我用過

 imgView.setRotation((float)imageRotation); 

這就引起了問題! 這樣做,這樣(即不使用ImageView的功能)

Matrix matrix = new Matrix(); 
    matrix.postRotate(imageRotation); 
    bmp = Bitmap.createBitmap(bmp , 0, 0, bmp .getWidth(), bmp.getHeight(), matrix, true); 

工作。