我正在尝试使用以下代码将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;
}
}
答案 0 :(得分:0)
我们这样做..对于任何视图TextVIew
,ImageView
而不是
this.setOnTouchListener
我们放了ImageView.setOntouchListener
img.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
gDetector.onTouchEvent(event);
return true;
}
});