Когда в жизненном цикле деятельности доступны элементы пользовательского интерфейса для измерения? - PullRequest
2 голосов
/ 09 марта 2012

Я определяю некоторые анимации на основе завышенных размеров некоторых элементов управления пользовательского интерфейса. Какую самую раннюю точку в жизненном цикле Activity я могу использовать, чтобы узнать, когда размеры элементов пользовательского интерфейса были измерены, и я могу запросить их размеры?

Ответы [ 3 ]

2 голосов
/ 09 марта 2012

Сразу после того, как вы задали Контент своей Активности с помощью метода setContentView(), я впервые смог получить информацию из моих виджетов (размер, текст и другие).

1 голос
/ 12 марта 2012

За запрос Рича:

Вы можете определить, когда ширина и высота, используя GlobalLayoutListener, вот так:

final View myView = findViewById(R.id.id_of_view);
ViewTreeObserver vto = myView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
  @Override
  public void onGlobalLayout() {
    int viewHeight = myView.getHeight();
    int viewWidth = myView.getWidth();

    // Do what you want with the width and height

    ViewTreeObserver obs = myView.getViewTreeObserver();
    obs.removeGlobalOnLayoutListener(this);
   }
  });

Полный (лучше) ответ: Как получить размеры вида?

0 голосов
/ 10 марта 2012

Если вы хотите перейти к точке, в которой виджет был ПРОСТО помещен, вы должны расширить каждый виджет, который хотите отслеживать.Затем переопределите метод onDraw и выполните захват, если это представление было нарисовано один раз

private boolean imVisible=false;
public boolean imVisible() {
    return imVisible;
}
    @Override
    protected void onDraw(Canvas canvas) {
        if(!imVisible){
            imVisible=true;
        }   
        super.onDraw(canvas);
    }

Затем вы можете сделать цикл for для интересующих виджетов, и вы знаете, что они нарисованы в их положении с размерами.

Гораздо лучшее решение - это когда onDraw вызывается при первом запуске обработчика, который обращается.Вы должны установить массив слушателей, которые следят за прогрессом виджетов.Таким образом, точный момент, когда последний виджет на экране ... вы это знаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...