Android OnTouch Listener 在应用程序处于发布模式时不起作用



在我的一项活动中,我有一个 ImageView,我在 TouchListener 上将其设置为它,以便在屏幕上移动它,问题是当我在调试模式下测试它时一切正常,我看到 ImageView 正在屏幕上移动,我也可以单击它。但是,当我为发布模式创建签名的APK并在同一设备上对其进行测试时,它没有响应!

图像视图位于相对布局内,并配置为:

<ImageView
android:id="@+id/imageView"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerInParent="true"
android:src="@drawable/app_launcher"
android:clickable="true"
/>

其代码为:(此代码可在onCreate方法中找到(

imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event))
{
Toast.makeTest(MainActivity.this, 
"imageView clicked!",Toast.LENGTH_LONG).show();
return true;
} else {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
initPosX= v.getX();
initPosY= v.getY();
initTouchX= event.getRawX();
initTouchY= event.getRawY();
lastAction= event.getAction();
return true;
case MotionEvent.ACTION_MOVE:
v.setX(initPosX+ (int)(event.getRawX() - initTouchX));
v.setY(initPosY+ (int)(event.getRawY() - initTouchY));
lastAction= event.getAction();
return true;
case MotionEvent.ACTION_UP:
v.setVisibility(View.VISIBLE);
lastAction= event.getAction();
return true;
}
}
return true;
}
});

我还有一个GestureDetectorListener来检测singleTap:

private class GestureListener extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return true;
}
}

在创建时声明手势类:

final GestureDetector mGesDetect = new GestureDetector(this, new GestureListener());

之后放置图像触摸列表,如以下代码:

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

private class GestureListener extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return true;
} 
}

最新更新