在我的应用程序中,我在一个活动中有一个自定义视图。 为了检测触摸事件,我在两个方法中都有onTouchEvent()方法。
自定义视图:onTouchEvent() - 方法基本上只标记被触摸的对象。
@Override
public boolean onTouchEvent(MotionEvent event) {
int maskedAction = event.getActionMasked();
switch (maskedAction) {
case MotionEvent.ACTION_DOWN:
touchedXY[0] = event.getX();
touchedXY[1] = event.getY();
mMatrix.mapPoints(touchedXY); // this is just for
event.setLocation(touchedXY[0], touchedXY[1]); // rotation purposes
for(int i = 0; i < mPoints[i]; i++){
mPoints[i].isSelected(setIsSelected(touchedXY)); //using method to
//check if point
//is selected
}
break;
default:
return false;
}
invalidate();
return true;
}
活动:如果触摸了一个对象,则LinearLayout应显示在活动的底部,并显示触摸点的数量。
int key = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
// get masked (not specific to a pointer) action
int maskedAction = event.getActionMasked();
switch (maskedAction) {
case MotionEvent.ACTION_DOWN:
List<AddressPoint> selectedPoints = Arrays.asList(mPoints);
if (key == 0) {
if (selectedPoints.size() > 0) {
key = 1;
test.setText(String.valueOf(selectedPoints.size()));
popup.setVisibility(View.VISIBLE);
} else {
test.setText(String.valueOf(selectedPoints.size()));
}
} else {
if (selectedPoints.size() > 0) {
test.setText(String.valueOf(selectedPoints.size()));
} else {
key = 0;
popup.setVisibility(View.GONE);
}
}
break;
default:
return false;
}
return false;
}
所以,它正在发挥作用,但表现得并不理想。活动似乎只对第二次尝试做出反应,并且每隔一秒就会更新一次。 例如:
我希望你能帮助我,我感谢你的帮助!
答案 0 :(得分:0)
问题似乎存在,因为在保存点之前会重新绘制视图。
因此,最好在onTouch onTouchEvent中保存点数,然后再调用另一个函数来相应地设置文本。