0

我試圖製作一個應用程序,它需要視頻,然後在gridview中顯示視頻。我已經到了所有視頻縮略圖都應該顯示在gridview中的地步。但是,我的問題是,我使用的方法有很多滯後時間。加載gridview需要一些時間,當我嘗試滾動時總會有某種滯後。這很可能是由於我爲每個視頻縮略圖使用了位圖。使用位圖縮略圖的問題

我想知道我能做些什麼來使這個更快更順暢。我的代碼發佈在下面。

class VideoAdapter extends BaseAdapter { 
Context context; 
ArrayList<String> videopathlist; 
Bitmap bmthumb; 


VideoAdapter(Context c, ArrayList<String> filepathlist){ 
    context = c; 
    videopathlist = new ArrayList<String>(); 
    this.videopathlist.addAll(filepathlist); 
    Log.i(TAG, "" + videopathlist); 
} 

@Override 
public int getCount() { 
    return videopathlist.size(); 
} 

@Override 
public Object getItem(int position) { 
    return videopathlist.get(position); 
} 

@Override 
public long getItemId(int arg0) { 
    return 0; 
} 

@Override 
public View getView(int posiiton, View arg1, ViewGroup arg2) { 
    ImageView imageview = new ImageView(context); 
    bmthumb = ThumbnailUtils.createVideoThumbnail(videopathlist.get(posiiton), MediaStore.Video.Thumbnails.MINI_KIND); 
    if (bmthumb != null) { 
     Log.i(TAG1, "There is a thumbnail"); 
     imageview.setImageBitmap(bmthumb); 
    } else { 
     Log.i(TAG1, "There is NOT a thumbnail"); 
    } 
    imageview.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    imageview.setLayoutParams(new GridView.LayoutParams(160, 160)); 


    return imageview; 
} 

感謝您的幫助

回答

1

兩兩件事:

使用ViewHolder緩存的一切,如下所述:Making ListView Scrolling Smooth(適用於GridView的太)

此外,使用ImageLoader的來動態加載圖像。有很多可用的,或者你可以建立自己的。這裏有一些:

所有這些裝載機使用位圖緩存這裏描述:Caching Bitmaps

而且,你可能是實際創建返回視圖時的縮略圖位圖。這讓我感到非常昂貴。我會這樣做,作爲一個獨立的步驟,無關顯示它們。例如,當您首次創建活動以生成任何新的縮略圖時,啓動AsyncTask。然後在您的適配器中查詢MediaStore以獲取生成的縮略圖。