@Override public void onViewAttachedToWindow(View view) { view.getViewTreeObserver().addOnPreDrawListener(this); }
public MaterialViewPagerHeader withPagerSlidingTabStrip(View pagerSlidingTabStrip) { this.mPagerSlidingTabStrip = pagerSlidingTabStrip; mPagerSlidingTabStrip.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { finalTabsY = dpToPx(-2, context); mPagerSlidingTabStrip.getViewTreeObserver().removeOnPreDrawListener(this); return false; } }); return this; }
private void doOnPreDraw(final View v, final Runnable runnable){ v.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { runnable.run(); v.getViewTreeObserver().removeOnPreDrawListener(this); return false; } }); }
@NonNull @Override public ListViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); final View view = inflater.inflate(R.layout.recycler_item, viewGroup, false); view.getLayoutParams().width = screenWidth; if (actualDimensions == null) { view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { if (actualDimensions == null) { actualDimensions = new int[] { view.getWidth(), view.getHeight() }; } view.getViewTreeObserver().removeOnPreDrawListener(this); return true; } }); } return new ListViewHolder(view); }
public void into(final ImageView target) { ViewTreeObserver viewTreeObserver = target.getViewTreeObserver(); viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { target.getViewTreeObserver().removeOnPreDrawListener(this); new ImageLoaderThread(target, url).start(); return true; } }); }
@Override public void setBlurAutoUpdate(boolean enabled) { blurView.getViewTreeObserver().removeOnPreDrawListener(drawListener); if (enabled) { blurView.getViewTreeObserver().addOnPreDrawListener(drawListener); } }
content.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { int[] screenloc = new int[2]; private int keyboardHeight;
content.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { int[] screenloc = new int[2]; private int keyboardHeight;
@NonNull public static OneShotPreDrawListener add(boolean preDrawReturnValue, @NonNull View view, @NonNull Runnable runnable) { OneShotPreDrawListener listener = new OneShotPreDrawListener(preDrawReturnValue, view, runnable); view.getViewTreeObserver().addOnPreDrawListener(listener); view.addOnAttachStateChangeListener(listener); return listener; }
/** * Constructor * {@inheritDoc} */ public WaveView(Context context) { super(context); // setUpPaint(); final View thisView = this; float density = thisView.getResources().getDisplayMetrics().density; mPaint = new Paint(); mPaint.setColor(0xff2196F3); mPaint.setAntiAlias(true); mPaint.setStyle(Paint.Style.FILL); mPaint.setShadowLayer((int) (0.5f + 2.0f * density), 0f, 0f, SHADOW_COLOR); // setUpPath(); mWavePath = new Path(); mDropTangentPath = new Path(); mDropCirclePath = new Path(); mShadowPath = new Path(); resetAnimator(); mDropRect = new RectF(); thisView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); thisView.getViewTreeObserver().addOnPreDrawListener(this); }
void init(@NonNull View view, @NonNull OnViewPositionChangeListener listener) { this.view = view; this.listener = listener; view.getViewTreeObserver().addOnPreDrawListener(this); if (isLaidOut()) { update(); } }
void getSize(@NonNull SizeReadyCallback cb) { int currentWidth = getTargetWidth(); int currentHeight = getTargetHeight(); if (isViewStateAndSizeValid(currentWidth, currentHeight)) { cb.onSizeReady(currentWidth, currentHeight); return; } // We want to notify callbacks in the order they were added and we only expect one or two // callbacks to be added a time, so a List is a reasonable choice. if (!cbs.contains(cb)) { cbs.add(cb); } if (layoutListener == null) { ViewTreeObserver observer = view.getViewTreeObserver(); layoutListener = new SizeDeterminerLayoutListener(this); observer.addOnPreDrawListener(layoutListener); } }
void getSize(@NonNull SizeReadyCallback cb) { int currentWidth = getTargetWidth(); int currentHeight = getTargetHeight(); if (isViewStateAndSizeValid(currentWidth, currentHeight)) { cb.onSizeReady(currentWidth, currentHeight); return; } // We want to notify callbacks in the order they were added and we only expect one or two // callbacks to be added a time, so a List is a reasonable choice. if (!cbs.contains(cb)) { cbs.add(cb); } if (layoutListener == null) { ViewTreeObserver observer = view.getViewTreeObserver(); layoutListener = new SizeDeterminerLayoutListener(this); observer.addOnPreDrawListener(layoutListener); } }
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1) private static void sceneChangeRunTransition(final @Nullable ViewGroup sceneRoot, final @Nullable Transition transition) { if (transition != null && sceneRoot != null && isTransitionsAllowed()) { ViewGroupOverlayUtils.initializeOverlay(sceneRoot); MultiListener listener = new MultiListener(transition, sceneRoot); sceneRoot.addOnAttachStateChangeListener(listener); sceneRoot.getViewTreeObserver().addOnPreDrawListener(listener); } else { sPendingTransitions.remove(sceneRoot); } }
@Override protected void onFinishInflate() { super.onFinishInflate(); if (!isInEditMode()) { getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { setMaterialHeight(); getViewTreeObserver().removeOnPreDrawListener(this); return false; } }); } } }
@Override protected void onStart() { super.onStart(); mCardView.setVisibility(View.VISIBLE); if(mInAnimationId != 0) mCardView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { mCardView.getViewTreeObserver().removeOnPreDrawListener(this); Animation anim = AnimationUtils.loadAnimation(mCardView.getContext(), mInAnimationId); mCardView.startAnimation(anim); 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); }
public void onCreate() { setContentView(R.layout.main); final TextView tv = (TextView)findViewById(R.id.image_test); final LayerDrawable ld = (LayerDrawable)tv.getBackground(); final ViewTreeObserver obs = mTv.getViewTreeObserver(); obs.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw () { Log.d(TAG, "onPreDraw tv height is " + tv.getHeight()); // bad for performance, remove on production int height = tv.getHeight(); int topInset = height / 2; ld.setLayerInset(1, 0, topInset, 0, 0); tv.setBackgroundDrawable(ld); return true; } }); }
@Test public void initWhileAttachedAddsAttachAndPreDrawListener() { ImageView target = mockFitImageViewTarget(true); ViewTreeObserver observer = target.getViewTreeObserver(); DeferredRequestCreator request = new DeferredRequestCreator(mock(RequestCreator.class), target, null); verify(observer).addOnPreDrawListener(request); }
@Test public void initWhileDetachedAddsAttachListenerWhichDefersPreDrawListener() { ImageView target = mockFitImageViewTarget(true); when(target.getWindowToken()).thenReturn(null); ViewTreeObserver observer = target.getViewTreeObserver(); DeferredRequestCreator request = new DeferredRequestCreator(mock(RequestCreator.class), target, null); verify(target).addOnAttachStateChangeListener(request); verifyNoMoreInteractions(observer); // Attach and ensure we defer to the pre-draw listener. request.onViewAttachedToWindow(target); verify(observer).addOnPreDrawListener(request); // Detach and ensure we remove the pre-draw listener from the original VTO. request.onViewDetachedFromWindow(target); verify(observer).removeOnPreDrawListener(request); }