2017-02-18 14 views
1

Я запрограммировал приложение для рисования, я хочу получить все X Y моего рисунка. То есть каждый раз, когда я касаюсь экрана, координаты x и y помещают их в двумерную таблицу,cordinate X Y draw Android

Я сделал тост, чтобы узнать, когда меняются координаты, и я обнаружил, что они меняются в movetouch метод, поэтому я объявляю таблицу в методе, и я все еще делаю тост, чтобы увидеть 10 строк моего массива, тост изменил координацию, поэтому я понял, что на самом деле значения раздавливаются всякий раз, когда изменяются переменные x и y, или Я посадка

public boolean onTouchEvent(MotionEvent event) { 
    float x = event.getX(); 
    float y = event.getY(); 
     switch (event.getAction()) { 

      case MotionEvent.ACTION_DOWN: 

        startTouch(x, y); 
        invalidate(); 
        break; 

      case MotionEvent.ACTION_UP: 

        upTouch(); 
        invalidate(); 
        break; 

      case MotionEvent.ACTION_MOVE: 

        moveTouche(x, y); 
        invalidate(); 
        break; 

     } 
     return true; 
    } 

Метод moveTouch

public void moveTouche (float x,float y) { 
    if ((canDraw)&& drawing) { 
    float dx = Math.abs(x - mX); 
    float dy = Math.abs(y - mY); 
    if(dx >= Tolerance || dy >= Tolerance){ 
     path.quadTo(mX,mY,(x+mX)/2,(y+mY)/2); 
     mX = x ; 
     mY = y; 
     double[][] point = new double [99][2]; 
     for (int i = 0; i < 99; i++) { 

      point[i][0]=x; 
      point[i][1]=y; 


     } 
     Toast.makeText(getContext(),"y = "+point[10][1]+" ",Toast.LENGTH_LONG).show(); 

    }} 
} 

enter image description here

+0

Каким образом это не работает? –

+0

@ AndyTurner это дает мне всего одно очко – CamlX

+0

вы хотите что-то рисовать на экране, где пользователь прикасается? –

ответ

2

Вы можете считывать столько точек, сколько хотите, с любого пути. Пример того, как читать координаты с середины пути:

PathMeasure pm = new PathMeasure(myPath, false); 
//coordinates will be here 
float aCoordinates[] = {0f, 0f}; 

//get coordinates of the middle point 
pm.getPosTan(pm.getLength() * 0.5f, aCoordinates, null); 

Вы можете пройти любое расстояние от начала пути, чтобы получить координаты точки.

+0

спасибо :) Еще один вопрос, если рисунок был прямой линией, которую я уже рисую (черный) или изогнутыми линиями, которые вы показали мне, как нарисованы, я восстанавливаю, как координаты сравниваются с координатами Красный рисунок, поэтому активируйте анимацию – CamlX

+0

Рад, что я мог бы держаться с тобой и помогал тебе :) Примите и поддержите этот ответ, если мой ответ вам поможет. –

+0

Сравнивая две кривые в порядке, позвольте мне посмотреть, что я могу сделать для вашей следующей проблемы :) –