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

来源:互联网 发布:女人自慰调查数据 编辑:程序博客网 时间:2024/06/07 10:14

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 方便处理滚动变化时的事件

具体使用时就很简单了

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滚后回来后,又隐藏它。


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

0 0
原创粉丝点击