android 仿京東搜尋欄隨滑動切換圖示及透明度漸變
阿新 • • 發佈:2019-02-03
核心程式碼:
//headview為頭佈局;llSearch為搜尋欄
recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//滑動的距離
mDistanceY += dy;
//上方圖片的高度
int headHeight = headView.getHeight();
if (mDistanceY < headHeight) {
//滑動距離小於上方圖片的1/2時,設定白色搜尋按鈕,透明度從0-255
if (mDistanceY < headHeight / 2) {
imgSearch.setImageResource(R.mipmap.search_white);
float scale = (float) mDistanceY / (headHeight / 2);
float alpha = scale * 255;
llSearch.getBackground().setAlpha((int) alpha);
} else {//滑動距離大於上方圖片的1/2並小於上方圖片時,設定黑色搜尋按鈕,透明度從0-255
imgSearch.setImageResource(R.mipmap.search_black);
float scale = (float) (mDistanceY - headHeight / 2) / (headHeight / 2);
float alpha = scale * 255;
llSearch.getBackground().setAlpha((int) alpha);
}
} else {
//當快速往下滑時,llSearch最後設定的alpha不約等於255,測試的為132,所以要再設定
llSearch.getBackground().setAlpha(255);
}
}
});