Проблема такая: есть поток, в котором проходит отрисовка круга.
В ui потоке (класс основной activity) вызывается метод onTouchEvent, берущий координаты x,y и передаёт их в поток рисования (прямым присвоением классу потока) в итоге по x всё нормально, а координата y оказывается смещена на некоторое значение, т.е. кружок появляется не под пальцем, а ниже. Или всё-таки нужно использовать Handler или AsyncTask, а не тупо присваивать
public boolean onTouchEvent(MotionEvent event) {
int X = (int) event.getX();
int Y = (int) event.getY();
myThread.xx=X;
myThread.yy=Y;
return true;
}