我有一个简单的问题:
假设我对scrollVIEw(或horizontalScrollVIEw)有一些看法.
有什么方法可以添加一个侦听器,该侦听器会告诉我这种视图何时进入可见区域的内部和外部?
我看到的唯一类似的问题是:
Android: how to check if a View inside of ScrollView is visible?
但是我想知道何时发生这样的事件(变得隐藏/可见).
解决方法:
子类化您正在使用的视图类(我对ImageVIEw这样做是因为我只是将那些添加到了滚动视图中):
public class PeekImageVIEw extends ImageVIEw implements VIEwTreeObserver.OnScrollChangedListener { private static final String LOG_TAG = "PeekImageVIEw"; private InVIEwportListener inVIEwportListener; private boolean isInVIEwport = false; public PeekImageVIEw(Context context) { super(context); } public PeekImageVIEw(Context context, AttributeSet attrs) { super(context, attrs); } public PeekImageVIEw(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public interface InVIEwportListener { voID onVIEwportEnter(PeekImageVIEw vIEw); voID onVIEwportExit(PeekImageVIEw vIEw); } public voID setInVIEwportListener(InVIEwportListener Listener) { this.inVIEwportListener = Listener; } @OverrIDe protected voID onAttachedToWindow() { super.onAttachedToWindow(); VIEwTreeObserver vto = getVIEwTreeObserver(); if (vto != null) { vto.addOnScrollChangedListener(this); } } @OverrIDe protected voID onDetachedFromWindow() { super.onDetachedFromWindow(); VIEwTreeObserver vto = getVIEwTreeObserver(); if (vto != null) { vto.removeOnScrollChangedListener(this); } } @OverrIDe public voID onScrollChanged() { Rect bounds = new Rect(); boolean inVIEwport = getLocalVisibleRect(bounds); Log.d(LOG_TAG, "is in vIEw " + bounds + " : " + inVIEwport + " ; " + bounds); if (inVIEwportListener != null && isInVIEwport != inVIEwport) { if (inVIEwport) { inVIEwportListener.onVIEwportEnter(this); } else { inVIEwportListener.onVIEwportExit(this); } } isInVIEwport = inVIEwport; }}
在视图进入或离开窗口的可见部分(视口)时,将InVIEwportListener附加到此PeekImageVIEw的实例将使您得到通知.
总结以上是内存溢出为你收集整理的android-在scrollview中显示视图时通知的方法?全部内容,希望文章能够帮你解决android-在scrollview中显示视图时通知的方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)