滑動RecyclerView時隱藏部分控制元件
阿新 • • 發佈:2019-01-25
在使用RecyclerView控制元件時,上下拖動控制元件時的時候,需要實時的隱藏與顯示部分控制元件,已到達很好的使用者體驗.
原理很簡單,當RecyclerView拖動至最上層時顯示控制元件,當RecyclerView.開始向下拖動時,隱藏控制元件,直接上程式碼:
定義兩個動畫:
private AlphaAnimation mShowAnim, mHiddenAmin;//控制元件的顯示和隱藏動畫
初始化:
//控制元件顯示的動畫
mShowAnim = new AlphaAnimation(0.0f, 1.0f);
mShowAnim.setDuration(300);
//控制元件隱藏的動畫
mHiddenAmin = new AlphaAnimation(1.0f, 0.0f);
mHiddenAmin.setDuration(300);
RecyclerView控制元件初始化:
mRecyclerView = (RecyclerView) findViewById(R.id.e_custom_merchandise_activity_recyclerview);
mRecyclerView.addOnScrollListener(new MyRecyclerViewScrollListener());
定義滑動監聽事件:
//滑動監聽
private class MyRecyclerViewScrollListener extends RecyclerView.OnScrollListener {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
int lastVisibleItem = manager.findLastCompletelyVisibleItemPosition();//獲取最後一個完全顯示的ItemPosition
// 當不滾動時
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
// 判斷是否滾動到頂部
if (lastVisibleItem == 0) {
mTextViewPersonalise.startAnimation(mShowAnim);
mTextViewPersonalise.setVisibility(View.VISIBLE);
}
} else if (newState == RecyclerView.SCROLL_STATE_DRAGGING ) {//拖動中
if (mTextViewPersonalise.getVisibility() == View.VISIBLE) {
mTextViewPersonalise.startAnimation(mHiddenAmin);
mTextViewPersonalise.setVisibility(View.INVISIBLE);//注意此處不要使用View.GONE
}
}
}
}
程式碼很簡單,原理也比較簡單.就不上傳效果圖了!