[MD][仿煎蛋]observablescrollview下拉隐藏actionbar

煎蛋是这个样子的:

[MD][仿煎蛋]observablescrollview下拉隐藏actionbar_第1张图片

下来隐藏actionbar是个很好的用户体验,特别是对于使用屏幕比较小的用户,下面我们自己来做这个功能。伟大的开源已经帮我们提供了这样的方法,我们只要站在巨人的肩膀上开发就可以了,这里我们引用的是 ksoichiro的Android-ObservableScrollView 

我们只引用开源工程中的几个文件


然后在activity_main.xml中添加 observablescrollview

<com.github.ksoichiro.android.observablescrollview.ObservableScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">
在MainActivity.java中setView

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
让MainActivity添加 ObservableScrollViewCallbacks接口

public class MainActivity extends AppCompatActivity 
implements ObservableScrollViewCallbacks 
并且实现下面三个与动作相关的回调函数
 @Override
  public void onScrollChanged(int scrollY, boolean firstScroll,
    boolean dragging) {
  }
  @Override
  public void onDownMotionEvent() {
  }
  @Override
  public void onUpOrCancelMotionEvent(ScrollState scrollState) {
  }
}


重点来了,在 onUpOrCancelMotionEvent 中实现 actionbar的显示和隐藏

public void onUpOrCancelMotionEvent(ScrollState scrollState) {
        ActionBar ab = getSupportActionBar();
        if (scrollState == ScrollState.UP) {
            if (ab.isShowing()) {
                ab.hide();
            }
        } else if (scrollState == ScrollState.DOWN) {
            if (!ab.isShowing()) {
                ab.show();
            }
        }
最终效果如下:



完整的源码 积分下载

同时,我也附上listview+observableScrollView的一个demo,这个基本上是按照git上的教程做的,效果如下:

[MD][仿煎蛋]observablescrollview下拉隐藏actionbar_第2张图片

代码请点击 下载


你可能感兴趣的:([MD][仿煎蛋]observablescrollview下拉隐藏actionbar)