2015-01-22 3 views
0

У меня есть следующий вопрос:Просмотр координат экрана

Im разрабатывает приложение, которое, когда я переместить ImageView и уронить его, если вид опускается ниже половины высоты экрана идет к (X, Y) положение и, если находится над экраном с половинной высотой, переходит в другое положение.

Мне нужно вычислить половину экрана общего, поэтому я использую следующий код:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
halfHeight = displaymetrics.heightPixels/2; 

Это прекрасно работает, им пытаются на экране 1920х1080, код возвращает 540. Но когда им будет чтобы увидеть, если, когда я опускаю представление, находится под или над половиной, вот что я не понимаю. Я получаю Y-позицию зрения и все в порядке, я не понимаю, почему Y = 0 не находится в верхней части экрана, если я перехожу к вершине, я получаю отрицательную позицию Y, например -260.

Кто-то может объяснить мне, почему это происходит? Есть ли способ, которым позиция (0,0) начинается в левом верхнем углу экрана?

здоровается, надеюсь, вы понимаете

ответ

0

Если вы звоните GetX() или GetY(), то вы получаете относительные значения х и у (по отношению к мнению о том, что вызов был передаваемом). Если вы звоните getRawX() или getRawY(), он предоставит вам абсолютное положение вида относительно экрана устройства.

Скорее всего, вы получаете отрицательные значения -260, потому что вы перетаскиваете ImageView 260 в сторону от вида, в котором был сделан вызов (возможно, вид в верхней части экрана имеет высоту 260). Если вы пытаетесь использовать getX() или getY() для вычисления середины экрана, тогда вам нужно будет учитывать все размеры всех просмотров, но я думаю, вы хотите использовать getRawX() и getRawY()

+0

Спасибо, что помогите мне. Итак, если вызов view.getX() будет возвращать позицию x, y, начиная с позиции просмотра координат до момента, когда я ее опустил? вычисляет это расстояние? – user3240604