У меня есть масштабируемый макет, я могу увеличить его, а также перетащить и переместить видимую часть. У меня есть много 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
?