1. 程式人生 > >Android 解決RecyclerView瀑布流效果結合Glide使用時圖片變形的問題

Android 解決RecyclerView瀑布流效果結合Glide使用時圖片變形的問題

變形 into 想要 pla enter glide加載圖片 pan etc clas

問題描述:使用Glide加載RecyclerView的Item中的圖片,RecyclerView使用了瀑布流展示圖片,但是滾動時圖片會不斷的加載,並且大小位置都會改變,造成顯示錯亂。

解決方法:使用瀑布流,我們可以根據要展示的列數來將屏幕寬度等分,從而獲得Item的寬度。知道了寬度,那麽我們就可以使用Glide的override()方法根據圖片的比例自適應地放大或縮小得到合適的高度。這樣顯示時就不會由錯亂的問題了。

步驟1:設置Item的最外層布局的layout_height為wrap_content(當然也可以設置一個固定大小),如果Item裏面的圖片也設置高度為wrap_content;

步驟2:先得到屏幕的寬高,然後根據要顯示的列數進行均分。比如我現在想要展示列數為2的瀑布流,我們就可以把屏幕寬度除以2,得到圖片的寬度。

//屏幕的寬度(px值)
int screenWidth = getContext().getResources().getDisplayMetrics().widthPixels;
//Item的寬度,或圖片的寬度
int width = screenWidth/2;

步驟3:用Glide加載圖片

//這裏的SIZE_ORIGINAL為Gilde裏自帶的參數,不是我定義的常量
Glide.with(getContext()).load(item.getUrl()).override
(width,SIZE_ORIGINAL) .fitCenter().into(imageview);

然後再嘗試一下上下滾動RecyclerView,你會發現之前圖片變形錯位的問題都解決了。

Android 解決RecyclerView瀑布流效果結合Glide使用時圖片變形的問題