void clearCallbacksAndListener() { // Keep a reference to the layout attachStateListener and remove it here // rather than having the observer remove itself because the observer // we add the attachStateListener to will be almost immediately merged into // another observer and will therefore never be alive. If we instead // keep a reference to the attachStateListener and remove it here, we get the // current view tree observer and should succeed. ViewTreeObserver observer = view.getViewTreeObserver(); if (observer.isAlive()) { observer.removeOnPreDrawListener(layoutListener); } layoutListener = null; cbs.clear(); }
void clearCallbacksAndListener() { // Keep a reference to the layout attachStateListener and remove it here // rather than having the observer remove itself because the observer // we add the attachStateListener to will be almost immediately merged into // another observer and will therefore never be alive. If we instead // keep a reference to the attachStateListener and remove it here, we get the // current view tree observer and should succeed. ViewTreeObserver observer = view.getViewTreeObserver(); if (observer.isAlive()) { observer.removeOnPreDrawListener(layoutListener); } layoutListener = null; cbs.clear(); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); overridePendingTransition(R.anim.do_not_move, R.anim.do_not_move); setContentView(R.layout.activity_reveal_circular); if (savedInstanceState == null) { rootLayout.setVisibility(View.INVISIBLE); ViewTreeObserver viewTreeObserver = rootLayout.getViewTreeObserver(); if (viewTreeObserver.isAlive()) { viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { circularRevealActivity(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { rootLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); } else { rootLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); } } }); } } }
@Override public void onGlobalLayout() { final ViewTreeObserver trueObserver; if (observer.isAlive()) { trueObserver = observer; } else { trueObserver = view.getViewTreeObserver(); } removeOnGlobalLayoutListener(trueObserver, this); runnable.run(); } });
public void onDismiss() { mPopup = null; mMenu.close(); if (mTreeObserver != null) { if (!mTreeObserver.isAlive()) mTreeObserver = mAnchorView.getViewTreeObserver(); mTreeObserver.removeGlobalOnLayoutListener(this); mTreeObserver = null; } } public boolean isShowing() {
@Override public boolean onPreDraw() { ViewTreeObserver currentVto = fabBtn.getViewTreeObserver(); if (currentVto.isAlive()) { currentVto.removeOnPreDrawListener(this); } toggle(visible, animate, true); return true; } });
void onReadyOrAborted() { if (!hasRun) { hasRun = true; if (to != null) { final ViewTreeObserver observer = to.getViewTreeObserver(); if (observer.isAlive()) { observer.removeOnPreDrawListener(this); } } performAnimation(container, from, to, isPush, addingToView, changeListener); } }
public ViewTreeObserverAssert isNotAlive() { isNotNull(); Assertions.assertThat(actual.isAlive()) // .overridingErrorMessage("Expected to not be alive but was alive.") // .isFalse(); return this; } }
public ViewTreeObserverAssert isAlive() { isNotNull(); Assertions.assertThat(actual.isAlive()) // .overridingErrorMessage("Expected to be alive but was not alive.") // .isTrue(); return this; }
private void removeListener() { if (viewTreeObserver.isAlive()) { viewTreeObserver.removeOnPreDrawListener(this); } else { view.getViewTreeObserver().removeOnPreDrawListener(this); } view.removeOnAttachStateChangeListener(this); }
static ImageView mockFitImageViewTarget(boolean alive) { ViewTreeObserver observer = mock(ViewTreeObserver.class); when(observer.isAlive()).thenReturn(alive); ImageView mock = mock(ImageView.class); when(mock.getWindowToken()).thenReturn(mock(IBinder.class)); when(mock.getViewTreeObserver()).thenReturn(observer); return mock; }
void deferLoad(final Object model) { if (!cropView.getViewTreeObserver().isAlive()) { return; } cropView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (cropView.getViewTreeObserver().isAlive()) { //noinspection deprecation cropView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } performLoad(model); } } ); } }
@Override public void onGlobalLayout() { if (cropView.getViewTreeObserver().isAlive()) { //noinspection deprecation cropView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } performLoad(model); } }
@Override public boolean onPreDraw() { setScrollY(scrollPosition.y); ViewTreeObserver currentViewTreeObserver = getViewTreeObserver(); if (currentViewTreeObserver.isAlive()) { currentViewTreeObserver.removeOnPreDrawListener(this); } return true; } };
void cancel() { creator.clearTag(); callback = null; target.removeOnAttachStateChangeListener(this); ViewTreeObserver vto = target.getViewTreeObserver(); if (vto.isAlive()) { vto.removeOnPreDrawListener(this); } }
@Override public boolean onPreDraw() { ImageView target = this.target; ViewTreeObserver vto = target.getViewTreeObserver(); if (!vto.isAlive()) { return true; } int width = target.getWidth(); int height = target.getHeight(); if (width <= 0 || height <= 0) { return true; } target.removeOnAttachStateChangeListener(this); vto.removeOnPreDrawListener(this); this.creator.unfit().resize(width, height).into(target, callback); return true; }
@Test public void testDoesNotThrowOnPreDrawIfViewTreeObserverIsDead() { target.getSize(cb); int width = 1; int height = 2; LayoutParams layoutParams = new FrameLayout.LayoutParams(width, height); view.setLayoutParams(layoutParams); ViewTreeObserver vto = view.getViewTreeObserver(); view.requestLayout(); activity.visible(); assertFalse(vto.isAlive()); vto.dispatchOnPreDraw(); verify(cb).onSizeReady(eq(width), eq(height)); }
final ViewTreeObserver.OnScrollChangedListener onScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() { @Override public void onScrollChanged() { //do stuff here } }; final ScrollView scrollView = (ScrollView) findViewById(R.id.scroller); scrollView.setOnTouchListener(new View.OnTouchListener() { private ViewTreeObserver observer; @Override public boolean onTouch(View v, MotionEvent event) { if (observer == null) { observer = scrollView.getViewTreeObserver(); observer.addOnScrollChangedListener(onScrollChangedListener); } else if (!observer.isAlive()) { observer.removeOnScrollChangedListener(onScrollChangedListener); observer = scrollView.getViewTreeObserver(); observer.addOnScrollChangedListener(onScrollChangedListener); } return false; } });
@Test public void onLayoutSkipsIfViewIsAttachedAndViewTreeObserverIsDead() { ImageView target = mockFitImageViewTarget(false); RequestCreator creator = mock(RequestCreator.class); DeferredRequestCreator request = new DeferredRequestCreator(creator, target, null); ViewTreeObserver viewTreeObserver = target.getViewTreeObserver(); request.onPreDraw(); verify(viewTreeObserver).addOnPreDrawListener(request); verify(viewTreeObserver).isAlive(); verifyNoMoreInteractions(viewTreeObserver); verifyZeroInteractions(creator); }
@Override public void run() { final String appId = FacebookSdk.getApplicationId(); FetchedAppSettings appSettings = FetchedAppSettingsManager.getAppSettingsWithoutQuery(appId); if (appSettings == null || !appSettings.getCodelessEventsEnabled()) { return; } this.eventBindings = EventBinding.parseArray(appSettings.getEventBindings()); if (this.eventBindings != null) { View rootView = this.rootView.get(); if (rootView == null) { return; } ViewTreeObserver observer = rootView.getViewTreeObserver(); if (observer.isAlive()) { observer.addOnGlobalLayoutListener(this); observer.addOnScrollChangedListener(this); } startMatch(); } }