作者cooper6334 (小恐龍)
看板AndroidDev
標題Re: [問題] ImageView + ZoomButtonsController
時間Wed Jul 11 17:22:37 2012
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