Android 滑動RecyclerView時隱藏部分控件


在使用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
                }
            }
        }
    }

代碼很簡單,原理也比較簡單.就不上傳效果圖了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM