Как получить расстояние от 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)

Другие вопросы по тегам