Android 滾動RecyclerView載入圖片時的流暢度最佳化

來源:互聯網
上載者:User

標籤:ada   tar   roi   監聽   setimage   textutils   extends   實現   res   

實現:使用onScrollStateChanged回調檢測滾動狀態,並在RecyclerViewAdapter內部設定類似isScrolling的狀態值來控制網狀圖片的載入。 
下面是代碼舉例:

// BaseAdapter中添加如下代碼public abstract class BaseRecyclerViewAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    ……    protected boolean isScrolling = false;    ……    public void setScrolling(boolean scrolling) {        isScrolling = scrolling;    }}

具體的子Adapter實現:

// 在子Adapter中的onBind裡進行控制public class SubRecyclerViewAdapter extends BaseRecyclerViewAdapter<DataGuardRanking> {    ……    @Override    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {        RecyclerViewHolder holder = (RecyclerViewHolder) viewHolder;        ……        if (!TextUtils.isEmpty(data.getAvatarUrl()) && !isScrolling) {            // 這裡可以用Glide等網狀圖片載入庫        } else {            holder.avatarImg.setImageResource(佔位圖本地資源);        }        super.onBindViewHolder(holder, position);    }}

在UI層進行監聽:

// 外部對RecyclerView設定監聽mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {    @Override    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {        // 查看源碼可知State有三種狀態:SCROLL_STATE_IDLE(靜止)、SCROLL_STATE_DRAGGING(上升)、SCROLL_STATE_SETTLING(下落)        if (newState == SCROLL_STATE_IDLE) { // 滾動靜止時才載入圖片資源,極大提升流暢度            mRecyclerViewAdapter.setScrolling(false);            mRecyclerViewAdapter.notifyDataSetChanged(); // notify調用後onBindViewHolder會響應調用        } else            mRecyclerViewAdapter.setScrolling(true);        super.onScrollStateChanged(recyclerView, newState);    }});mRecyclerView.setAdapter(mRecyclerViewAdapter);

 

Android 滾動RecyclerView載入圖片時的流暢度最佳化

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.