我正在編程一個具有一些圖像的網格視圖的應用程序,我使用默認的垂直滾動,因爲並非所有的圖像都可以放入屏幕。我一直在滾動,並且在新行的渲染上有一條新線要顯示,似乎有滯後現象。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);
}
當滾動到下一行時,我得到一個掛起,然後它正常繼續。
在此先感謝
,你可以發佈您的代碼。這可能有很多原因。 – Samuel
你解決了你的問題嗎?我有同樣的問題。圖像從服務器加載並在單獨的線程上解碼,我只是在UI-THread上執行setImageBitMap,並且它仍然滯後一點... –
其實,我並沒有真正改變UI設計,而在新設計中,我已經創建了幾個網頁,使用幾個網格。分頁時,我將整個網格劃過。但是我發佈的編輯代碼實際上是以更好的方式加載圖像,而不是阻止活動/片段的加載,並且我爲應用程序的其餘部分使用處理程序方法。 – RMalke