下面列出了android.view.ViewTreeObserver#removeOnScrollChangedListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/** @hide */
protected void detachFromAnchor() {
final View anchor = getAnchor();
if (anchor != null) {
final ViewTreeObserver vto = anchor.getViewTreeObserver();
vto.removeOnScrollChangedListener(mOnScrollChangedListener);
anchor.removeOnAttachStateChangeListener(mOnAnchorDetachedListener);
}
final View anchorRoot = mAnchorRoot != null ? mAnchorRoot.get() : null;
if (anchorRoot != null) {
anchorRoot.removeOnAttachStateChangeListener(mOnAnchorRootDetachedListener);
anchorRoot.removeOnLayoutChangeListener(mOnLayoutChangeListener);
}
mAnchor = null;
mAnchorRoot = null;
mIsAnchorRootAttached = false;
}
public void detachFrom(ViewGroup viewGroup)
{
try
{
if (viewGroup == mViewGroup)
{
ViewTreeObserver viewTreeObserver = mViewGroup.getViewTreeObserver();
viewTreeObserver.removeOnGlobalFocusChangeListener(this);
viewTreeObserver.removeOnScrollChangedListener(this);
viewTreeObserver.removeOnGlobalLayoutListener(this);
viewTreeObserver.removeOnTouchModeChangeListener(this);
borderEffect.OnDetach(mView, viewGroup);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public void detachFrom(ViewGroup viewGroup) {
try {
if (viewGroup == mViewGroup) {
ViewTreeObserver viewTreeObserver = mViewGroup.getViewTreeObserver();//获取view树的观察者
viewTreeObserver.removeOnGlobalFocusChangeListener(this);//通知全局性移除相应的listener
viewTreeObserver.removeOnScrollChangedListener(this);
viewTreeObserver.removeOnGlobalLayoutListener(this);
viewTreeObserver.removeOnTouchModeChangeListener(this);
mMetroViewBorder.OnDetach(mView, viewGroup);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void detachFrom(ViewGroup viewGroup) {
try {
if (viewGroup == mViewGroup) {
ViewTreeObserver viewTreeObserver = mViewGroup.getViewTreeObserver();
viewTreeObserver.removeOnGlobalFocusChangeListener(this);
viewTreeObserver.removeOnScrollChangedListener(this);
viewTreeObserver.removeOnGlobalLayoutListener(this);
viewTreeObserver.removeOnTouchModeChangeListener(this);
borderEffect.OnDetach(mView, viewGroup);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void detachFrom(ViewGroup viewGroup) {
try {
if (viewGroup == mViewGroup) {
ViewTreeObserver viewTreeObserver = mViewGroup.getViewTreeObserver();//获取view树的观察者
viewTreeObserver.removeOnGlobalFocusChangeListener(this);//通知全局性移除相应的listener
viewTreeObserver.removeOnScrollChangedListener(this);
viewTreeObserver.removeOnGlobalLayoutListener(this);
viewTreeObserver.removeOnTouchModeChangeListener(this);
mMetroViewBorder.OnDetach(mView, viewGroup);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void detachFrom(ViewGroup viewGroup) {
try {
if (viewGroup == mViewGroup) {
ViewTreeObserver viewTreeObserver = mViewGroup.getViewTreeObserver();
viewTreeObserver.removeOnGlobalFocusChangeListener(this);
viewTreeObserver.removeOnScrollChangedListener(this);
viewTreeObserver.removeOnGlobalLayoutListener(this);
viewTreeObserver.removeOnTouchModeChangeListener(this);
mMetroViewBorder.OnDetach(mView, viewGroup);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 取消注册 ViewTreeObserver
*/
private void unRegisterViewTreeObserver(Activity activity) {
ViewTreeObserver viewTreeObserver = activity.getWindow().getDecorView().getViewTreeObserver();
viewTreeObserver.removeOnGlobalFocusChangeListener(AppViewTreeObserver.getInstance());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
viewTreeObserver.removeOnGlobalLayoutListener(AppViewTreeObserver.getInstance());
}
viewTreeObserver.removeOnScrollChangedListener(AppViewTreeObserver.getInstance());
}
@Override
protected void onDetachedFromWindow() {
ViewTreeObserver viewTreeObserver = getViewTreeObserver();
viewTreeObserver.removeOnScrollChangedListener(mOnScrollChangedListener);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
viewTreeObserver.removeOnGlobalLayoutListener(mOnGlobalLayoutListener);
} else {
viewTreeObserver.removeGlobalOnLayoutListener(mOnGlobalLayoutListener);
}
if (updateOnDraw
&& android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
viewTreeObserver.removeOnDrawListener(onDrawListener);
}
super.onDetachedFromWindow();
}
@Override
protected void onDetachedFromWindow() {
ViewTreeObserver viewTreeObserver = getViewTreeObserver();
viewTreeObserver.removeOnScrollChangedListener(mOnScrollChangedListener);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
viewTreeObserver.removeOnGlobalLayoutListener(mOnGlobalLayoutListener);
} else {
viewTreeObserver.removeGlobalOnLayoutListener(mOnGlobalLayoutListener);
}
if (updateOnDraw
&& android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
viewTreeObserver.removeOnDrawListener(onDrawListener);
}
super.onDetachedFromWindow();
}
private void removeViewTreeObserverListeners() {
ViewTreeObserver treeObserver = getViewTreeObserver();
if (treeObserver.isAlive()) {
treeObserver.removeOnScrollChangedListener(this);
treeObserver.removeGlobalOnLayoutListener(this);
}
}
private void setupViewTreeObserver() {
ViewTreeObserver treeObserver = getViewTreeObserver();
if (treeObserver.isAlive()) {
treeObserver.removeOnScrollChangedListener(this);
treeObserver.removeGlobalOnLayoutListener(this);
treeObserver.addOnScrollChangedListener(this);
treeObserver.addOnGlobalLayoutListener(this);
}
}
/**
* Stop listening for scroll changes and interpolating based on position.
*
* @param viewTreeObserver {@link ViewTreeObserver belonging to the {@link View} being
* interpolated.
*/
public void stopListeningForScrollChanges(@NonNull ViewTreeObserver viewTreeObserver) {
viewTreeObserver.removeOnScrollChangedListener(scrollChangedListener);
}