RecycleView滾動(dòng)監(jiān)聽
實(shí)測(cè)可用方法:
mRecyclerView.addOnScrollListener(newRecyclerView.OnScrollListener() {
privateinttotalDy?=0;
@Override
publicvoidonScrolled(RecyclerView?recyclerView,intdx,intdy)?{
totalDy?-=?dy;
}
});
使用場(chǎng)景: 對(duì)RecycleView滾動(dòng)距離進(jìn)行監(jiān)聽,動(dòng)態(tài)改變 ActionBar透明度 ,完成漸變標(biāo)題欄
具體實(shí)現(xiàn)代碼:
viewHolder.getRecyclerView().setOnScrollListener(newRecyclerView.OnScrollListener() {
@Override
public voidonScrollStateChanged(RecyclerView recyclerView, intnewState) {
super.onScrollStateChanged(recyclerView,newState);
}
@Override
public voidonScrolled(RecyclerView recyclerView, intdx, intdy) {
/*計(jì)算透明度 算法說明:? if條件,450是 規(guī)定在高度0-450之間進(jìn)行變動(dòng) alpha不透明時(shí)值為255 ,值越小越透 增加if else判斷,提高穩(wěn)定性*/
d-= dy;
if(d<450) {
floatscale = (float) (-d) /450;
if(scale >1) {
scale =1;
}
floatalpha = (255* scale);
Log.i("--->>>","onScrolled:dy "+ dy +"---d總距離"+d+"--透明度"+ alpha);
//只是layout背景透明(仿知乎滑動(dòng)效果)55c1f5 Color.argb((int) alpha, 0xfd, 0x91, 0x5b)
viewHolder.getBarLinearLayout().setBackgroundColor(Color.argb((int) alpha,0x55,0xc1,0xf5));
}else{
Log.i("--->>>","onScrolled:dy距離大于450");
viewHolder.getBarLinearLayout().setBackgroundColor(Color.argb(255,0x55,0xc1,0xf5));
}
}
});
參考:http://blog.csdn.net/wangbaochu/article/details/49446469