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

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

源代码1 项目: Blur   文件: BlurDrawableActivity.java
public ViewTreeObserver.OnScrollChangedListener getOnScrollChangedListener() {
    if (mOnScrollChangedListener == null) {
        mOnScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
            @Override
            public void onScrollChanged() {
                //BlurDrawable
                ViewCompat.postInvalidateOnAnimation(mBlurDrawableRelativeLayout);

                //BlurMaskRelativeLayout
                int scrollY = mScrollView.getScrollY();
                Log.i("robin","scrollY:"+scrollY);
                float alpha = (float) scrollY/1000;
                if (alpha > 1f) {
                    alpha = 1f;
                }
                Log.i("robin","alpha:"+alpha);
                mBlurMaskRelativeLayout.setAlpha(1f-(alpha));

            }
        };
    }
    return mOnScrollChangedListener;
}
 
/**
 * Sets observer. See {@link Observer}. Regardless of the passed value, notifications for
 * the previous observer will be canceled.
 *
 * @param observer Instance that will receive notifications, or null to clear the observer.
 */
public void setObserver(@Nullable Observer observer) {
    removeObservers();
    if (observer == null) return;

    mObserver = observer;
    mOnGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            checkScrolledToBottom();
        }
    };
    getViewTreeObserver().addOnGlobalLayoutListener(mOnGlobalLayoutListener);
    mOnScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            checkScrolledToBottom();
        }
    };
    getViewTreeObserver().addOnScrollChangedListener(mOnScrollChangedListener);
}
 
源代码3 项目: GlassView   文件: GlassView.java
private ViewTreeObserver.OnScrollChangedListener getScrollChangedListener() {
    if (mScrollChangedListener == null) {
        mScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
            /**
             * Callback method to be invoked when something in the view tree
             * has been scrolled.
             */
            @Override
            public void onScrollChanged() {
                //Log.d(TAG, "onScrollChanged() called");
                invalidate();
            }
        };
    }
    return mScrollChangedListener;
}
 
源代码4 项目: TelePlus-Android   文件: ActionBarPopupWindow.java
private void init() {
    if (superListenerField != null) {
        try {
            mSuperScrollListener = (ViewTreeObserver.OnScrollChangedListener) superListenerField.get(this);
            superListenerField.set(this, NOP);
        } catch (Exception e) {
            mSuperScrollListener = null;
        }
    }
}
 
源代码5 项目: TelePlus-Android   文件: EmojiView.java
private void init() {
    if (superListenerField != null) {
        try {
            mSuperScrollListener = (ViewTreeObserver.OnScrollChangedListener) superListenerField.get(this);
            superListenerField.set(this, NOP);
        } catch (Exception e) {
            mSuperScrollListener = null;
        }
    }
}
 
源代码6 项目: TelePlus-Android   文件: ActionBarPopupWindow.java
private void init() {
    if (superListenerField != null) {
        try {
            mSuperScrollListener = (ViewTreeObserver.OnScrollChangedListener) superListenerField.get(this);
            superListenerField.set(this, NOP);
        } catch (Exception e) {
            mSuperScrollListener = null;
        }
    }
}
 
源代码7 项目: TelePlus-Android   文件: EmojiView.java
private void init() {
    if (superListenerField != null) {
        try {
            mSuperScrollListener = (ViewTreeObserver.OnScrollChangedListener) superListenerField.get(this);
            superListenerField.set(this, NOP);
        } catch (Exception e) {
            mSuperScrollListener = null;
        }
    }
}
 
源代码8 项目: KrGallery   文件: ActionBarPopupWindow.java
private void init() {
    if (superListenerField != null) {
        try {
            mSuperScrollListener = (ViewTreeObserver.OnScrollChangedListener) superListenerField.get(this);
            superListenerField.set(this, NOP);
        } catch (Exception e) {
            mSuperScrollListener = null;
        }
    }
}
 
源代码9 项目: talk-android   文件: MDRootLayout.java
private void addScrollListener(final ViewGroup vg, final boolean setForTop, final boolean setForBottom) {
    if ((!setForBottom && mTopOnScrollChangedListener == null
            || (setForBottom && mBottomOnScrollChangedListener == null))) {
        ViewTreeObserver.OnScrollChangedListener onScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
            @Override
            public void onScrollChanged() {
                boolean hasButtons = false;
                for (MDButton button : mButtons) {
                    if (button != null && button.getVisibility() != View.GONE) {
                        hasButtons = true;
                        break;
                    }
                }
                if (vg instanceof WebView) {
                    invalidateDividersForWebView((WebView) vg, setForTop, setForBottom, hasButtons);
                } else {
                    invalidateDividersForScrollingView(vg, setForTop, setForBottom, hasButtons);
                }
                invalidate();
            }
        };
        if (!setForBottom) {
            mTopOnScrollChangedListener = onScrollChangedListener;
            vg.getViewTreeObserver().addOnScrollChangedListener(mTopOnScrollChangedListener);
        } else {
            mBottomOnScrollChangedListener = onScrollChangedListener;
            vg.getViewTreeObserver().addOnScrollChangedListener(mBottomOnScrollChangedListener);
        }
        onScrollChangedListener.onScrollChanged();
    }
}
 
源代码10 项目: Yahala-Messenger   文件: ActionBarPopupWindow.java
private void init() {
    if (superListenerField != null) {
        try {
            mSuperScrollListener = (ViewTreeObserver.OnScrollChangedListener) superListenerField.get(this);
            superListenerField.set(this, NOP);
        } catch (Exception e) {
            mSuperScrollListener = null;
        }
    }
}
 
源代码11 项目: BlurView   文件: BlurDrawableActivity.java
public ViewTreeObserver.OnScrollChangedListener getOnScrollChangedListener() {
    if (mOnScrollChangedListener == null) {
        mOnScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
            @Override
            public void onScrollChanged() {
                //BlurDrawable
                ViewCompat.postInvalidateOnAnimation(mBlurDrawableRelativeLayout);

            }
        };
    }
    return mOnScrollChangedListener;
}
 
源代码12 项目: openshop.io-android   文件: ProductFragment.java
/**
     * Prepare scroll view related animations and floating wishlist button.
     *
     * @param view fragment base view.
     */
    private void prepareScrollViewAndWishlist(View view) {
        final View productBackground = view.findViewById(R.id.product_background);
        wishlistButton = view.findViewById(R.id.product_add_to_wish_list);

        scrollViewListener = new ViewTreeObserver.OnScrollChangedListener() {
            private boolean alphaFull = false;

            @Override
            public void onScrollChanged() {
                int scrollY = contentScrollLayout.getScrollY();
                if (productImagesRecycler != null) {

                    if (wishlistButton.getWidth() * 2 > scrollY) {
                        wishlistButton.setTranslationX(scrollY / 4);
                    } else {
                        wishlistButton.setTranslationX(wishlistButton.getWidth() / 2);
                    }

                    float alphaRatio;
                    if (productImagesRecycler.getHeight() > scrollY) {
                        productImagesRecycler.setTranslationY(scrollY / 2);
                        alphaRatio = (float) scrollY / productImagesRecycler.getHeight();
                    } else {
                        alphaRatio = 1;
                    }
//                    Timber.e("scrollY:" + scrollY + ". Alpha:" + alphaRatio);

                    if (alphaFull) {
                        if (alphaRatio <= 0.99) alphaFull = false;
                    } else {
                        if (alphaRatio >= 0.9) alphaFull = true;
                        productBackground.setAlpha(alphaRatio);
                    }
                } else {
                    Timber.e("Null productImagesScroll");
                }
            }
        };
    }
 
源代码13 项目: 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();
}
 
源代码14 项目: 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();
}
 
源代码15 项目: Telegram-FOSS   文件: ActionBarPopupWindow.java
private void init() {
    if (superListenerField != null) {
        try {
            mSuperScrollListener = (ViewTreeObserver.OnScrollChangedListener) superListenerField.get(this);
            superListenerField.set(this, NOP);
        } catch (Exception e) {
            mSuperScrollListener = null;
        }
    }
}
 
源代码16 项目: Telegram   文件: ActionBarPopupWindow.java
private void init() {
    if (superListenerField != null) {
        try {
            mSuperScrollListener = (ViewTreeObserver.OnScrollChangedListener) superListenerField.get(this);
            superListenerField.set(this, NOP);
        } catch (Exception e) {
            mSuperScrollListener = null;
        }
    }
}