Как узнать, когда представление действительно отображается - PullRequest
1 голос
/ 30 марта 2011

У меня есть Галерея, которая отображает несколько прокручиваемых фреймов, каждый из которых содержит сложный макет. Одним из этих элементов макета является пользовательское представление, похожее на калибровочное, которое должно анимироваться всякий раз, когда оно отображается, а не просто создается. Поэтому, если я прокручиваю до макета, содержащего этот вид, один раз, затем возвращаюсь, затем снова прокручиваю туда - он должен выполнить анимацию, и пользователь должен увидеть его.

Я не нашел подходящего обратного вызова для этого. То, что я уже пробовал, это переопределение:

OnDraw

OnLayout

onAttachedToWindow

onDisplayHint

onVisibilityChanged

Некоторые из них вообще не вызываются, а некоторые вызываются только тогда, когда Галерея повторно инициализирует представление, а не когда оно действительно отображается.

Спасибо, вперед!

1 Ответ

1 голос
/ 30 марта 2011

Вы можете попробовать переопределить getView на адаптере вашей галереи:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);
    /* trigger your animation on this view */
    return view;
}

Нет явного контракта для вызова getView, но его следует вызывать при появлении соответствующего представления.на экране.

...