Android 滚动悬停需求的简单实现

发布时间:2019-06-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android 滚动悬停需求的简单实现脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

AndROId 滚动悬停需求的简单实现

有一种需求,需要某些按钮或者信息栏,随着界面的滚动,悬停在屏幕上方,即不随着其他信息一起隐藏,对于这种需求,有一个简单的实现,就是设置两个一样的控件,然后判断原来随着滚动的那个控件的上边缘是否被隐藏了,如果是,则在悬浮位置显示第二个控件(又或者只用一个控件,第一个隐藏了自后就把它从滚动的容器中remove出来,然后添加到新的位置去)。

下面来简单展示下实现方法:

首先实现一个监听容器类,ListeningScrollView

public class ListeningScrollView extends ScrollView {
    PRivate OnScrollChangedListener onScrollChangedListener;

    public ListeningScrollView(Context context) {
        suPEr(context);
    }

    public ListeningScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ListeningScrollView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public interface OnScrollChangedListener {
        public void onScrollChanged(int x, int y, int oldxX, int oldY);
    }

    /**
     * 
     * @param onScrollChangedListener
     */
    public void setOnScrollListener(OnScrollChangedListener onScrollChangedListener) {
        this.onScrollChangedListener = onScrollChangedListener;
    }

    @override
    protected void onScrollChanged(int x, int y, int oldX, int oldY) {
        super.onScrollChanged(x, y, oldX, oldY);
        if (onScrollChangedListener != null) {
            onScrollChangedListener.onScrollChanged(x, y, oldX, oldY);
        }
    }
}

这个类为scrollView加了一个OnScrollChangedListener 方便处理滚动变化时的事件

具体使用时就很简单了

@H_512_151@final ListeningScrollView vScroll = (ListeningScrollView) findViewById(R.id.scrollview); vScroll.setOnScrollListener(new OnScrollChangedListener() { @Override public void onScrollChanged(int x, int y, int oldxX, int oldY) { vLayoutFloat.setVisibility(y > vLayout.getTop() ?View.VISIBLE : View.GONE); } });

两个layout功能一样,这里是当vLayout的上边缘,小于scrollview的上边缘,即被隐藏的情况下,悬浮的vLayoutfloat则显示出来,当vLayout滚后回来后,又隐藏它。


文章原创转载请注明出处。

脚本宝典总结

以上是脚本宝典为你收集整理的Android 滚动悬停需求的简单实现全部内容,希望文章能够帮你解决Android 滚动悬停需求的简单实现所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。