在使用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 } } } }
代碼很簡單,原理也比較簡單.就不上傳效果圖了!