【发布时间】:2015-06-21 07:52:48
【问题描述】:
我正在使用PhotoViewhttps://github.com/chrisbanes/PhotoView
它自己已经在你给它的ImageView 上实现了一个OnTouchListener。
这是我的问题,我还需要实现 OnLongTouchListener 并且在其中我需要触摸事件的 X & Y coordinates。问题是我无法从OnLongTouchListener->onLongClick(View ..) 获取那些,这意味着我还需要实现我自己的OnTouchListener 从MotionEvent 获取X & Y 将它们放在类变量中,而不是在OnLongTouchListener 中做我的事情。
但是我自己的 OnTouchListener 会覆盖 PhotoViews 侦听器,移除缩放和滑动功能。
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import java.util.Observable;
import uk.co.senab.photoview.PhotoViewAttacher;
public class MapView extends Observable {
private MainActivity activity;
private PhotoViewAttacher photoView;
private Matrix viewMatrix;
protected ImageView view;
protected Bitmap bitmap;
public MapView(MainActivity activity) {
this.activity = activity;
view = (ImageView) activity.findViewById(R.id.map_view);
bitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.floorplan);
photoView = new PhotoViewAttacher(view);
viewMatrix = view.getImageMatrix();
view.setOnTouchListener(new MapViewTouchListener());
view.setOnLongClickListener(new MapViewLongTouchListener());
}
private class MapViewLongTouchListener implements View.OnLongClickListener {
public boolean onLongClick(View v) {
Log.i("output", "Long press");
return true;
}
}
private class MapViewTouchListener implements View.OnTouchListener {
public boolean onTouch(View v, MotionEvent event) {
Log.i("output", "Touch");
return true;
}
}
}
临时解决方案。我创建了自己的类并覆盖了onTouch 方法。原来PhotoViewAttacher 实现了OnTouchListener,所以我只需重新实现该方法就能让它工作。
【问题讨论】: