看板 AndroidDev 關於我們 聯絡資訊
ZoomButtonsController.setVisible必須要在Window建立後才能運作 而整個Window建立完成是在onResume()跑完之後 所以可以透過Handler來呼叫setVisible(true) 來保證他會在window建立完成後才執行 然後之後要放大縮小的話,還是要在onZoom裡面自己處理 可是onZoom只有帶一個boolean,沒有view的資訊 剛才我試過的結果,應該還是把要縮放的View宣告成全域 然後再在onZoom裡面去動你想縮放的東西。 還有因為zoom的button位置會隨著上層的View移動 所以比較建議綁在上層的Layout, 這樣不管怎麼縮放,只要沒動到Layout按鈕出現的位置就不會改變 範例程式http://pastebin.com/hQ10DXqE 說真的,沒有比自己寫兩個Button省事多少,除了他能自動消失之外 附帶一提,把AutoDismissed設成true的話,還要自己處理重新顯示縮放按鈕的事件 ......發現詭異的Bug 在ZoomButton顯示的時候好像會把返回鍵吃掉無法離開程式 抓onKeyDown也沒用 改成會自動消失,然後點螢幕會出現按鈕的程式 http://pastebin.com/jDu8iaPa 問題好像是出在setFocusable(true) 假如把這行拔掉的話就可以按返回鍵,但是會噴Exception= = ※ 引述《givemepass (〆)》之銘言: : 大家好 小弟有一個疑問 : 就是我想要將ImageView加入ZoomButtonsController的功能, : 就像有Android Gallery裡面的照片 : 點一下就會出現像Mapview一樣 有放大縮小的功能 : 但是小弟上網找很多資料 , 卻找不到一個可以正常跑出來的範例 : 不知道是哪邊出問題 : 程式碼如下 : Image imageView = (ImageView)findViewById(R.id.image_view); : ZoomButtonsController mZoomButtonsController = new : ZoomButtonsController(imageView); : mZoomButtonsController.setVisible(true); : mZoomButtonsController.setFocusable(true); : mZoomButtonsController.setZoomInEnabled(true); : mZoomButtonsController.setZoomOutEnabled(true); : mZoomButtonsController.setZoomSpeed(1000); : mZoomButtonsController.setAutoDismissed(true); : mZoomButtonsController.setOnZoomListener(new OnZoomListener() { : @Override : public void onVisibilityChanged(boolean visible) {} : @Override : public void onZoom(boolean zoomIn) { : } : }); : 這樣會出現 : Cannot make the zoom controller visible if the owner view is not attached to : a window. : 的訊息, 請問我的做法是哪邊可能出現了錯誤 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.91.176
givemepass:感謝分享 我來試看看:D 07/11 17:58
givemepass:跑不了耶@@ 請問大大可以給我整份專案嗎? 07/11 18:08
應該xml裡拉好RelativeLayout跟ImageView設好id 然後圖檔來源改成自己的就能跑拉
givemepass:有 可是還是跑不了 07/11 20:03
givemepass:Caused by: java.lang.ClassNotFoundException 07/11 20:03
givemepass:所以還是麻煩大大上傳一下整個專案 我看差別在哪 謝謝 07/11 20:03
https://dl.dropbox.com/u/34095361/TestZoomButton.zip
givemepass:有了耶 不過很奇怪我寫的跟你的一樣 只是差別在layout 07/11 21:48
givemepass:你的多包了一層 RelativeLayout 怎麼這樣就可以跑了? 07/11 21:48
givemepass:另外請問大大 如果ImageView想要可以上下左右拖曳 07/11 21:51
givemepass:是不是還要在寫一些事件來進行判斷? 07/11 21:51
多包一層Layout是我中間在測試的東西,拔掉應該沒差 你會噴ClassNotFoundException我猜應該是你開的專案版本太低 要自由拖動ImageView的話可能要自己改寫上層Layout或是Activity的onTouchEvent喔 ※ 編輯: cooper6334 來自: 140.112.91.176 (07/11 21:58)
givemepass:謝謝^^ 學到很多 07/11 22:06