2011-08-01 109 views
1

我正在編程一個具有一些圖像的網格視圖的應用程序,我使用默認的垂直滾動,因爲並非所有的圖像都可以放入屏幕。我一直在滾動,並且在新行的渲染上有一條新線要顯示,似乎有滯後現象。android gridview在滾動上的滯後

所有的圖像都是可繪製的,所以它不是像加載圖像那樣引起的,至少不是明確的。那麼,如何解決這個問題的任何想法?滾動滯後於我的atrix,應用程序應該運行的最終設備遠遠比它差。

編輯 - 這裏是一些代碼:

public View getView(int position, View convertView, ViewGroup parent) { 
    T item = getItem(position); 
    Box box = convertView == null ? new Box(mContext) : (Box) convertView; 
    onBindModel(box, item); 
    return box; 
} 

@Override 
public void onBindModel(Box box, Model item) { 
    box.param.putSerializable("model", item); 
    box.setDescricao(item.getNome()); 
    box.getModelImageView().setImageResource(item.thumbResId); 
} 

編輯

所以,作爲建議,只是嘗試這樣的代碼,但仍得到相同的結果:

@Override 
public void onBindModel(final Box box, final Model item) { 
    box.param.putSerializable("model", item); 
    box.setDescricao(item.getNome()); 

    new Thread(){ 
     public void run() { 
      Message msg = new Message(); 
      msg.obj =box.getModelImageView(); 
      msg.arg1 =item.thumbResId; 

      mHandler.sendMessage(msg); 
     } 
    }.start(); 
} 

private Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message message) { 
     Bitmap bm = BitmapFactory.decodeResource(getResources(), message.arg1); 
     setImage((ImageView) message.obj,bm); 
    } 
}; 

public void setImage(ImageView imgView, Bitmap bm) { 
    imgView.setImageBitmap(bm); 
} 

當滾動到下一行時,我得到一個掛起,然後它正常繼續。

在此先感謝

+0

,你可以發佈您的代碼。這可能有很多原因。 – Samuel

+0

你解決了你的問題嗎?我有同樣的問題。圖像從服務器加載並在單獨的線程上解碼,我只是在UI-THread上執行setImageBitMap,並且它仍然滯後一點... –

+0

其實,我並沒有真正改變UI設計,而在新設計中,我已經創建了幾個網頁,使用幾個網格。分頁時,我將整個網格劃過。但是我發佈的編輯代碼實際上是以更好的方式加載圖像,而不是阻止活動/片段的加載,並且我爲應用程序的其餘部分使用處理程序方法。 – RMalke

回答

0

老問題,但它的伎倆:

Glide.with(context) 
      .load(stickersData[position]) 
      .into(imageView); 

使用Glide