Android下拉上滑顯示與隱藏Toolbar另一種實現

來源:互聯網
上載者:User

標籤:


public abstract class RecyclerViewScrollListener extends RecyclerView.OnScrollListener { private static final int SCROLL_DISTANCE = 50; private int totalScrollDistance; private boolean isShow = true; @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int firstVisableItem = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition(); //當第一個item存在介面上時就不觸發隱藏、顯示操作 if(firstVisableItem==0) { return; } if ((dy > 0 && isShow) || (dy < 0 && !isShow)) { totalScrollDistance += dy; } if (totalScrollDistance > SCROLL_DISTANCE && isShow) { hide(); isShow = false; totalScrollDistance = 0; } else if (totalScrollDistance < -SCROLL_DISTANCE && !isShow) { show(); isShow = true; totalScrollDistance = 0; } } public abstract void hide(); public abstract void show();}
隱藏和顯示事件處理
mRecyclerView.addOnScrollListener(new RecyclerViewScrollListener() { @Override public void hide() { mToolbar.animate().translationY(-mToolbar.getHeight()).setInterpolator(new AccelerateDecelerateInterpolator()); } @Override public void show() { mToolbar.animate().translationY(0).setInterpolator(new AccelerateDecelerateInterpolator());} });

效果:

xml布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"><android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:paddingTop="?attr/actionBarSize" android:clipToPadding="false"android:layout_height="match_parent"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:background="#8803A9F4"android:layout_height="?actionBarSize" /> </RelativeLayout>

其中上面RecyclerView中有用到一個屬性:android:clipToPadding,這個屬性用的不多,這裡說明一下用法,這個屬性意思當就是當我們設定了paddingTop等屬性時候,用來設定列表的內容是否可以繪製在padding地區, 預設是true,表示不可以繪製在padding地區,false表示可以在padding地區繪製,如上顯示,列表地區本來是全屏的,而我設定了paddingTop為actionbar的高度,所以列表的內容會在actionbar下面,當往上滑動時候由於我設定了android:clipToPadding="false",所以可以繪製在padding地區,下面我如果把它設為true,android:clipToPadding="true",不覺明曆,肯定是上面有一塊padding的空白地區,來看看效果:

Android下拉上滑顯示與隱藏Toolbar另一種實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.