Как получить расстояние от View до дна телефона?
Если у меня есть определенный вид на макет (ImageView
Например, можно ли найти расстояние от нижней границы просмотра до нижней части экрана телефона?
Благодарю.
4 ответа
// instantiate DisplayMetrics
DisplayMetrics dm = new DisplayMetrics();
// fill dm with data from current display
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
// loc will hold the coordinates of your view
int[] loc = new int[2];
// fill loc with the coordinates of your view (loc[0] = x, looc[1] = y)
yourImageView.getLocationOnScreen(loc);
// calculate the distance from the TOP(its y-coordinate) of your view to the bottom of the screen
int distance = dm.heightPixels - loc[1];
Вам нужно дождаться обратного вызова, когда макет размещен с дочерними представлениями. Это слушатель, который вы должны добавить в свой корневой вид, чтобы вычислить координаты для вашего изображения. В противном случае он вернет 0.
imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int[] locations = new int[2];
imageView.getLocationOnScreen(locations);
int x = locations[0];
int y = locations[1];
}
});
И вы должны получить ширину и высоту экрана, используя getWindowManager().
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Теперь у вас есть вид x и y местоположений на экране, ширина экрана и высота. Вы можете рассчитать расстояние, используя эти точки.
View.getLocationOnScreen() даст вам y. Добавьте ширину вида и отступы, чтобы получить самую нижнюю точку обзора.
getContext (). getResources (). getDisplayMetrics (). heightPixels даст вам высоту экрана в пикселях.
Вычтите два, и вы получите разницу в пикселях.
Вы можете найти это следующим образом.
Используйте это, чтобы получить позицию просмотра на экране
View.getLocationOnScreen()
и / или getLocationInWindow().
получить экран
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Затем рассчитайте (height-view.y-location)