Как переместить видимую часть макета на ощупь - PullRequest
0 голосов
/ 27 марта 2020

У меня есть масштабируемый макет, я могу увеличить его, а также перетащить и переместить видимую часть. У меня есть много ImageViews на нем. Когда я касаюсь любого изображения, видимая часть макета должна двигаться так, как ImageView будет в центре его. Я прочитал официальную документацию, она объясняет, как это сделать, перетаскивая, используя onScroll. Но так как я не буду использовать onScroll, у меня нет distanceX и distanceY.

, мне нужно вычислить расстояние между первым X до X из ImageView, Я думаю. Но первый X дает мне странные позиции (когда я масштабирую макет и нажимаю на некоторые ImageView, это дает мне отрицательные значения):

MotionEvent.ACTION_UP -> {
    Log.d("DEBUG_TAG", "Action was UP")
    Log.d("event_pos", event.x.toString()) //pos inside the imageview (as it's a small ImageView, the event.x will be so small, but it's ok)
    Log.d("x_width", sky.width.toString())
    Log.d("x", sky.x.toString()) //This get's negative when I zoom the layout
    true
}

Вот когда я нажимаю на Imageview, когда макет без увеличения (каждая часть макета видна):

2020-03-27 16:33:24.718 1144-1144/com.example.android.myproject D/event_pos: 49.62622
2020-03-27 16:33:24.719 1144-1144/com.example.android.myproject D/x_width: 2160
2020-03-27 16:33:24.719 1144-1144/com.example.android.myproject D/x: 15.249939

Вот когда я нажимаю ImageView после увеличения макета:

2020-03-27 16:35:38.199 1144-1144/com.example.android.myproject D/event_pos: 39.680298
2020-03-27 16:35:38.199 1144-1144/com.example.android.myproject D/x_width: 2160
2020-03-27 16:35:38.199 1144-1144/com.example.android.myproject D/x: -1820.9098

Почему координаты получаются Отрицательно, когда макет увеличен и как можно отцентрировать ImageView, перемещая видимую часть макета, при касании ImageView?

...