Я реализую щепотку, чтобы увеличить приложение для рисования, но когда я увеличиваю масштаб, он рисует линию. Я знаю, почему это происходит (структура моего метода onTouchEvent), но я не могу найти способ обойти это. Может ли кто-нибудь помочь?pinch для увеличения по андроидному холсту рисует линию
public boolean onTouchEvent(MotionEvent event){
//get x and y values of user touch
float touchx = event.getX();
float touchy = event.getY();
boolean isScaling;
if (event.getPointerCount() > 1){
sgd.onTouchEvent(event);
isScaling = true;
return true;
}
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
drawPath.moveTo(touchx, touchy);
drawPath.lineTo((touchx+1.0f), touchy); //enable drawing points
break;
case MotionEvent.ACTION_MOVE:
drawPath.lineTo(touchx, touchy);
break;
case MotionEvent.ACTION_UP:
drawCanvas.drawPath(drawPath, drawPaint);
drawPath.reset();
break;
default:
return false;
}
invalidate();
return true;
}
Редактировать: получил это! также еще не реализована функция перетаскивания ...
public boolean onTouchEvent(MotionEvent event){
//get x and y values of user touch
float touchx = event.getX();
float touchy = event.getY();
if (event.getPointerCount() > 1){
sgd.onTouchEvent(event);
isScaling=true;
return true;
}
else if (moving){
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
oldx = touchx;
oldy = touchy;
break;
case MotionEvent.ACTION_MOVE:
if (isScaling == false){
tx = touchx-oldx;
ty = touchy-oldy;
//canvas.translate
}
break;
case MotionEvent.ACTION_UP:
if(isScaling){
isScaling = false;
}
break;
default:
return false;
}
}
else{
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
drawPath.moveTo(touchx, touchy);
oldx = touchx;
oldy = touchy;
drawPath.lineTo((touchx+1.0f), touchy); //enable drawing points, silence during scaling somehow
break;
case MotionEvent.ACTION_MOVE:
if (isScaling == false){
drawPath.lineTo(touchx, touchy);
}
break;
case MotionEvent.ACTION_UP:
if(isScaling){
isScaling = false;
}
else{
drawCanvas.drawPath(drawPath, drawPaint);
}
drawPath.reset();
break;
default:
return false;
}
}
invalidate();
return true;
}
Добавьте решение в качестве ответа. +1 для выяснения этого – ElefantPhace