作者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
1F:推 givemepass:感谢分享 我来试看看:D 07/11 17:58
2F:推 givemepass:跑不了耶@@ 请问大大可以给我整份专案吗? 07/11 18:08
应该xml里拉好RelativeLayout跟ImageView设好id
然後图档来源改成自己的就能跑拉
3F:推 givemepass:有 可是还是跑不了 07/11 20:03
4F:→ givemepass:Caused by: java.lang.ClassNotFoundException 07/11 20:03
5F:→ givemepass:所以还是麻烦大大上传一下整个专案 我看差别在哪 谢谢 07/11 20:03
https://dl.dropbox.com/u/34095361/TestZoomButton.zip
6F:推 givemepass:有了耶 不过很奇怪我写的跟你的一样 只是差别在layout 07/11 21:48
7F:→ givemepass:你的多包了一层 RelativeLayout 怎麽这样就可以跑了? 07/11 21:48
8F:推 givemepass:另外请问大大 如果ImageView想要可以上下左右拖曳 07/11 21:51
9F:→ givemepass:是不是还要在写一些事件来进行判断? 07/11 21:51
多包一层Layout是我中间在测试的东西,拔掉应该没差
你会喷ClassNotFoundException我猜应该是你开的专案版本太低
要自由拖动ImageView的话可能要自己改写上层Layout或是Activity的onTouchEvent喔
※ 编辑: cooper6334 来自: 140.112.91.176 (07/11 21:58)
10F:推 givemepass:谢谢^^ 学到很多 07/11 22:06