Сохранение четырех X, Y местоположений на изображении из пользовательского ввода в Android - PullRequest
0 голосов
/ 03 мая 2020

У меня есть изображение, и мне нужно, чтобы пользователь отметил 4 точки на изображении, которые я могу затем использовать для некоторых вычислений. У меня есть код, который может сохранить одну точку, используя onclicklistener и ontouchlistener, но когда я попытался добавить новый onclicklistener и ontouchlistener, чтобы сохранить другую точку, обе точки всегда одинаковы.

Я также хотел бы добавить маркер в точке, выбранной пользователем, но это отдельный вопрос.

Вот код, который я получил до сих пор

publi c Класс MainActivity расширяет AppCompatActivity {

// class member variable to save the X,Y coordinates
private float[] VerticalTouchDownXY1 = new float[2];
private float[] VerticalTouchDownXY2 = new float[2];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // add both a touch listener and a click listener
    View myView = findViewById(R.id.my_view);
    myView.setOnTouchListener(touchListener);
    myView.setOnClickListener(clickListener);
}

// the purpose of the touch listener is just to store the touch X,Y coordinates
View.OnTouchListener touchListener = new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        // save the X,Y coordinates
        if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
            VerticalTouchDownXY1[0] = event.getX();
            VerticalTouchDownXY1[1] = event.getY();
        }

        // let the touch event pass on to whoever needs it
        return false;
    }
};

View.OnTouchListener touchListener = new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        // save the X,Y coordinates
        if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
            VerticalTouchDownXY2[0] = event.getX();
            VerticalTouchDownXY2[1] = event.getY();
        }

        // let the touch event pass on to whoever needs it
        return false;
    }
};

    View.OnClickListener clickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // retrieve the stored coordinates
            float x1 = VerticalTouchDownXY1[0];
            float y1 = VerticalTouchDownXY1[1];

            Log.i("TAG", "FirstPoint: " + x1 + ", " + y1);
        }
    };

View.OnClickListener clickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // retrieve the stored coordinates
        float x2 = VerticalTouchDownXY2[0];
        float y2 = VerticalTouchDownXY2[1];

        // use the coordinates for whatever
        Log.i("TAG", "SecondPoint: " + x2 + ", " + y2);
    }
};

}

...