2015-06-22 39 views
-1

我正在制作一个音乐播放器,到目前为止我所做的是我使用元数据文件在其列表视图中创建了一个列表视图中的歌曲列表。 现在当我滚动我的列表它滞后,这可能是因为图像加载。 我提到Google Play音乐应用程序,他们所做的是他们在滚动时抓取专辑封面,所以滚动非常顺畅。 有什么办法来实现这种功能?仅当它们即将显示时在列表视图中加载图像

+0

在您的列表视图可以将您的图像异步加载到意见,这个类的调用。看到http://developer.android.com/training/displaying-bitmaps/load-bitmap.html它会有所帮助。 – Sayem

回答

0

你必须使用延迟加载的图像,所以图像将在后台下载。

public class DownloadImage extends AsyncTask<ImageView, Void, Bitmap> { 

    ImageView imageView = null; 

    @Override 
    protected Bitmap doInBackground(ImageView... imageViews) { 
     this.imageView = imageViews[0]; 
     return download_Image((String) imageView.getTag()); 
    } 

    @Override 
    protected void onPostExecute(Bitmap result) { 
     imageView.setImageBitmap(result); 
    } 

    private Bitmap download_Image(String url) { 
     try { 
      URL ulrn = new URL(url); 
      HttpURLConnection con = (HttpURLConnection) ulrn.openConnection(); 

      InputStream iS = con.getInputStream(); 
      Bitmap bmp = BitmapFactory.decodeStream(iS); 
      return bmp; 

     } catch (Exception ex) { 
      ex.printStackTrace(); 
      return null; 
     } 
    } 

} 

请在您的适配器getview

imgThumbnail.setTag(<your image url>); 
new DownloadImage().execute(imgThumbnail); 
+0

我不想从url获取图像。我想从他们那里得到他们。这是怎么回事?是imgThumbnail一个ImageView? –

+0

这是异步任务,imgthumbnail是一个imageview。您可以修改异步任务以适应您的要求。如果你需要一个例子,给我一个样本uri –

+0

final Uri sArtworkUri = Uri .parse(“content:// media/external/audio/albumart”); Uri uri = ContentUris.withAppendedId(sArtworkUri,currSong.getAlbumID()); 这是我的uri代码。我尝试修改异步任务,但它需要上下文,我不能通过,因为它会超过任何参数。 –

相关问题