Android万能音乐播放器在MediaItemViewHolder中添加专辑封面
Android universal music player add album cover in the MediaItemViewHolder
不确定这里有多少人熟悉 Android Universal Music Player but I am having issue with displaying an album in the MediaItemViewHolder.java 文件。
所以这是我修改后的基本结构:
// image view for the album cover
holder.mImageView = (ImageView) convertView.findViewById(R.id.play_eq);
// get the album art url
String artUrl = description.getIconUri().toString();
Bitmap art;
AlbumArtCache cache = AlbumArtCache.getInstance();
art = cache.getIconImage(artUrl);
....
if (cachedState == null || cachedState != state) {
switch (state) {
case STATE_PLAYABLE:
// display the album cover
holder.mImageView.setImageBitmap(art);
break;
....
这样可以正确显示专辑封面。但是,它最初是空白的。一旦用户单击某个项目,就会显示图像。
屏幕截图 #1:加载应用程序且用户未单击任何项目后:
屏幕截图 #2:一旦用户点击项目播放歌曲
我不太确定是什么原因导致相册最初是空白的。查看 AlbumArtCache.java 我看不到任何可能导致此问题的关于 OnClickListener 的限制。
有什么解决这个问题的建议吗?
cache.getIconImage(url)
实际上并没有获取 url 并将其存储在缓存中。它 returns 当前值或 null。相反,您必须致电 AlbumArtCache#fetch(String url, FetchListener listener)
FullScreenPlayerActivity#fetchImageAsync(MediaDescription description)
中有一个很好的原型
以下是项目可播放时您可以在方法中执行的操作。
AlbumArtCache cache = AlbumArtCache.getInstance();
Bitmap art = cache.getIconImage(url);
if (art == null) {
cache.fetch(url, new AlbumArtCache.FetchListener() {
@Override
public void onFetched(String artUrl, Bitmap bitmap, Bitmap icon) {
if (artUrl.equals(url)) {
holder.mImageView.setImageBitmap(icon);
}
}
});
} else {
holder.mImageView.setImageBitmap(bitmap);
}
不确定这里有多少人熟悉 Android Universal Music Player but I am having issue with displaying an album in the MediaItemViewHolder.java 文件。
所以这是我修改后的基本结构:
// image view for the album cover
holder.mImageView = (ImageView) convertView.findViewById(R.id.play_eq);
// get the album art url
String artUrl = description.getIconUri().toString();
Bitmap art;
AlbumArtCache cache = AlbumArtCache.getInstance();
art = cache.getIconImage(artUrl);
....
if (cachedState == null || cachedState != state) {
switch (state) {
case STATE_PLAYABLE:
// display the album cover
holder.mImageView.setImageBitmap(art);
break;
....
这样可以正确显示专辑封面。但是,它最初是空白的。一旦用户单击某个项目,就会显示图像。
屏幕截图 #1:加载应用程序且用户未单击任何项目后:
屏幕截图 #2:一旦用户点击项目播放歌曲
我不太确定是什么原因导致相册最初是空白的。查看 AlbumArtCache.java 我看不到任何可能导致此问题的关于 OnClickListener 的限制。
有什么解决这个问题的建议吗?
cache.getIconImage(url)
实际上并没有获取 url 并将其存储在缓存中。它 returns 当前值或 null。相反,您必须致电 AlbumArtCache#fetch(String url, FetchListener listener)
FullScreenPlayerActivity#fetchImageAsync(MediaDescription description)
以下是项目可播放时您可以在方法中执行的操作。
AlbumArtCache cache = AlbumArtCache.getInstance();
Bitmap art = cache.getIconImage(url);
if (art == null) {
cache.fetch(url, new AlbumArtCache.FetchListener() {
@Override
public void onFetched(String artUrl, Bitmap bitmap, Bitmap icon) {
if (artUrl.equals(url)) {
holder.mImageView.setImageBitmap(icon);
}
}
});
} else {
holder.mImageView.setImageBitmap(bitmap);
}