android.view.ViewTreeObserver#OnDrawListener ( )源码实例Demo

下面列出了android.view.ViewTreeObserver#OnDrawListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Trebuchet   文件: FirstFrameAnimatorHelper.java
public static void initializeDrawListener(View view) {
    if (sGlobalDrawListener != null) {
        view.getViewTreeObserver().removeOnDrawListener(sGlobalDrawListener);
    }
    sGlobalDrawListener = new ViewTreeObserver.OnDrawListener() {
            private long mTime = System.currentTimeMillis();
            public void onDraw() {
                sGlobalFrameCounter++;
                if (DEBUG) {
                    long newTime = System.currentTimeMillis();
                    Log.d("FirstFrameAnimatorHelper", "TICK " + (newTime - mTime));
                    mTime = newTime;
                }
            }
        };
    view.getViewTreeObserver().addOnDrawListener(sGlobalDrawListener);
    sVisible = true;
}
 
源代码2 项目: TurboLauncher   文件: FirstFrameAnimatorHelper.java
public static void initializeDrawListener(View view) {
    if (sGlobalDrawListener != null) {
        view.getViewTreeObserver().removeOnDrawListener(sGlobalDrawListener);
    }
    sGlobalDrawListener = new ViewTreeObserver.OnDrawListener() {
            private long mTime = System.currentTimeMillis();
            public void onDraw() {
                sGlobalFrameCounter++;
                if (DEBUG) {
                    long newTime = System.currentTimeMillis();
                    Log.d("FirstFrameAnimatorHelper", "TICK " + (newTime - mTime));
                    mTime = newTime;
                }
            }
        };
    view.getViewTreeObserver().addOnDrawListener(sGlobalDrawListener);
    sVisible = true;
}
 
源代码3 项目: LB-Launcher   文件: FirstFrameAnimatorHelper.java
public static void initializeDrawListener(View view) {
    if (sGlobalDrawListener != null) {
        view.getViewTreeObserver().removeOnDrawListener(sGlobalDrawListener);
    }
    sGlobalDrawListener = new ViewTreeObserver.OnDrawListener() {
            private long mTime = System.currentTimeMillis();
            public void onDraw() {
                sGlobalFrameCounter++;
                if (DEBUG) {
                    long newTime = System.currentTimeMillis();
                    Log.d("FirstFrameAnimatorHelper", "TICK " + (newTime - mTime));
                    mTime = newTime;
                }
            }
        };
    view.getViewTreeObserver().addOnDrawListener(sGlobalDrawListener);
    sVisible = true;
}
 
源代码4 项目: LaunchEnr   文件: FirstFrameAnimatorHelper.java
static void initializeDrawListener(View view) {
    if (sGlobalDrawListener != null) {
        view.getViewTreeObserver().removeOnDrawListener(sGlobalDrawListener);
    }
    sGlobalDrawListener = new ViewTreeObserver.OnDrawListener() {
            private long mTime = System.currentTimeMillis();
            public void onDraw() {
                sGlobalFrameCounter++;
            }
        };
    view.getViewTreeObserver().addOnDrawListener(sGlobalDrawListener);
    sVisible = true;
}
 
源代码5 项目: AndroidGodEye   文件: PageDrawMonitor.java
private void runOnDrawEnd(View view, ViewTreeObserver.OnDrawListener onDrawListener, int maxPostTimes, @NonNull ViewUtil.OnDrawCallback onDrawCallback) {
    if (view == null || onDrawListener == null) {
        return;
    }
    maxPostTimes --;
    int finalMaxPostTimes = maxPostTimes;
    postTraversalFinishCallBack(() -> {
        if (!isDraw && finalMaxPostTimes > 0) {
            runOnDrawEnd(view, onDrawListener, finalMaxPostTimes, onDrawCallback);
        } else {
            view.getViewTreeObserver().removeOnDrawListener(onDrawListener);
            onDrawCallback.didDraw();
        }
    });
}
 
源代码6 项目: AndroidGodEye   文件: ImageCanaryInternal.java
void start(Application application, ImageCanary imageCanaryEngine) {
    Handler handler = ThreadUtil.createIfNotExistHandler(IMAGE_CANARY_HANDLER);
    callbacks = new SimpleActivityLifecycleCallbacks() {

        private Map<Activity, ViewTreeObserver.OnDrawListener> mOnDrawListenerMap = new HashMap<>();
        private Set<ImageIssue> mImageIssues = new HashSet<>();

        @Override
        public void onActivityResumed(Activity activity) {
            super.onActivityResumed(activity);
            ViewGroup parent = (ViewGroup) activity.getWindow().getDecorView();
            Runnable callback = inspectInner(new WeakReference<>(activity), imageCanaryEngine, mImageIssues);
            ViewTreeObserver.OnDrawListener onDrawListener = () -> {
                if (handler != null) {
                    handler.removeCallbacks(callback);
                    handler.postDelayed(callback, 300);
                }
            };
            mOnDrawListenerMap.put(activity, onDrawListener);
            parent.getViewTreeObserver().addOnDrawListener(onDrawListener);
        }

        @Override
        public void onActivityPaused(Activity activity) {
            super.onActivityPaused(activity);
            ViewTreeObserver.OnDrawListener onDrawListener = mOnDrawListenerMap.remove(activity);
            ViewGroup parent = (ViewGroup) activity.getWindow().getDecorView();
            if (onDrawListener != null) {
                parent.getViewTreeObserver().removeOnDrawListener(onDrawListener);
            }
        }
    };
    application.registerActivityLifecycleCallbacks(callbacks);
}
 
源代码7 项目: science-journal   文件: RunReviewOverlay.java
public void refreshAfterChartLoad(final boolean backUpdateProgressBar, final int numAttempts) {
  if (!chartController.hasDrawnChart()) {
    // Refresh the Run Review Overlay after the line graph presenter's chart
    // has finished drawing itself.
    final ViewTreeObserver observer = chartController.getChartViewTreeObserver();
    if (observer == null) {
      return;
    }
    observer.removeOnDrawListener(onDrawListener);
    onDrawListener =
        new ViewTreeObserver.OnDrawListener() {
          @Override
          public void onDraw() {
            RunReviewOverlay.this.post(
                new Runnable() {
                  @Override
                  public void run() {
                    if (!observer.isAlive()) {
                      if (numAttempts < MAX_REFRESH_ATTEMPTS) {
                        // Just try again, maybe it will come alive.
                        refreshAfterChartLoad(backUpdateProgressBar, numAttempts + 1);
                      }
                      return;
                    }
                    // The ViewTreeObserver calls its listeners without an iterator,
                    // so we need to remove the listener outside the flow or we risk
                    // an index-out-of-bounds crash in the case of multiple listeners.
                    observer.removeOnDrawListener(onDrawListener);
                    onDrawListener = null;
                    refresh(backUpdateProgressBar);
                  }
                });
          }
        };
    observer.addOnDrawListener(onDrawListener);
  } else {
    refresh(backUpdateProgressBar);
  }
}
 
源代码8 项目: ParallaxEverywhere   文件: PEWTextView.java
@Override
protected void onAttachedToWindow() {
    super.onAttachedToWindow();

    mOnScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            applyParallax();
        }
    };

    mOnGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            heightView = (float) getHeight();
            widthView = (float) getWidth();

            applyParallax();
        }
    };

    ViewTreeObserver viewTreeObserver = getViewTreeObserver();
    viewTreeObserver.addOnScrollChangedListener(mOnScrollChangedListener);
    viewTreeObserver.addOnGlobalLayoutListener(mOnGlobalLayoutListener);

    if (updateOnDraw
            && android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        onDrawListener = new ViewTreeObserver.OnDrawListener() {
            @Override
            public void onDraw() {
                applyParallax();
            }
        };
        viewTreeObserver.addOnDrawListener(onDrawListener);
    }

    parallaxAnimation();
}
 
源代码9 项目: ParallaxEverywhere   文件: PEWImageView.java
@Override
protected void onAttachedToWindow() {
    super.onAttachedToWindow();

    mOnScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            applyParallax();
        }
    };

    mOnGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            heightImageView = (float) getHeight();
            widthImageView = (float) getWidth();

            applyParallax();
        }
    };

    ViewTreeObserver viewTreeObserver = getViewTreeObserver();
    viewTreeObserver.addOnScrollChangedListener(mOnScrollChangedListener);
    viewTreeObserver.addOnGlobalLayoutListener(mOnGlobalLayoutListener);

    if (updateOnDraw
            && android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        onDrawListener = new ViewTreeObserver.OnDrawListener() {
            @Override
            public void onDraw() {
                applyParallax();
            }
        };
        viewTreeObserver.addOnDrawListener(onDrawListener);
    }

    parallaxAnimation();
}
 
源代码10 项目: AndroidGodEye   文件: PageDrawMonitor.java
public void listen() {
    ViewTreeObserver.OnDrawListener onDrawListener = () -> isDraw = true;
    view.getViewTreeObserver().addOnDrawListener(onDrawListener);
    runOnDrawEnd(view, onDrawListener, 3, onDrawCallback);
}