无法添加到imageView Android中的手势检测器

时间:2016-05-25 07:50:37

标签: android android-imageview

我正在尝试使用以下代码将imageview附加到手势检测器。我希望首先使用此代码能够获取位图的颜色并显示消息,但它什么都不做。我在这里缺少什么?我可以在TouchEvent方法中放置一些东西吗?

public class MainActivity extends Activity implements 
    GestureDetector.OnGestureListener,
    GestureDetector.OnDoubleTapListener{

private static final String DEBUG_TAG = "Gestures";
private GestureDetectorCompat mDetector; 

// Called when the activity is first created. 
@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   img = (ImageView) findViewById(R.id.imageView);        

   mDetector = new GestureDetectorCompat(img.getContext(),this);   
   mDetector.setOnDoubleTapListener(this);

}

@Override 
public boolean onTouchEvent(MotionEvent event){ 
    this.mDetector.onTouchEvent(event);
    // Be sure to call the superclass implementation
    return super.onTouchEvent(event);
}

@Override
public boolean onDown(MotionEvent event) { 
    Log.d(DEBUG_TAG,"onDown: " + event.toString()); 
    return true;
}  

@Override
public void onLongPress(MotionEvent event) {
    Log.d(DEBUG_TAG, "onLongPress: " + event.toString()); 
}   

@Override
public boolean onSingleTapUp(MotionEvent event) {
   int x = (int) e.getX();
                    int y = (int) e.getY();
                    Log.d("SingleTapUp",String.valueOf(x+" "+y));

                    int pixel = bitmap.getPixel(x, y);

                    if (pixel == Color.parseColor("#94e3f9")) {
                        Toast.makeText(MainActivity.this, "Blue", Toast.LENGTH_SHORT).show();
                    }
                    if (pixel == Color.parseColor("#f0c828")) {
                        Toast.makeText(MainActivity.this, "Orange", Toast.LENGTH_SHORT).show();
                    }
                    if (pixel == Color.parseColor("#b3522c")) {
                        Toast.makeText(MainActivity.this, "Red", Toast.LENGTH_SHORT).show();
                    }

                    return true;
}

@Override
public boolean onDoubleTap(MotionEvent event) {
    Log.d(DEBUG_TAG, "onDoubleTap: " + event.toString());
    return true;
}

@Override
public boolean onDoubleTapEvent(MotionEvent event) {
    Log.d(DEBUG_TAG, "onDoubleTapEvent: " + event.toString());
    return true;
}

@Override
public boolean onSingleTapConfirmed(MotionEvent event) {
    Log.d(DEBUG_TAG, "onSingleTapConfirmed: " + event.toString());
    return true;
}

}

1 个答案:

答案 0 :(得分:0)

我们这样做..对于任何视图TextVIewImageView而不是
this.setOnTouchListener我们放了ImageView.setOntouchListener

 img.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            gDetector.onTouchEvent(event);
            return true;
        }
    });