gpt4 book ai didi

java - Android万能音乐播放器在MediaItem ViewHolder中添加专辑封面

转载 作者:行者123 更新时间:2023-11-30 10:59:55 29 4
gpt4 key购买 nike

不确定这里有多少人熟悉 Android Universal Music Player但我在 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:加载应用程序且用户未点击任何项目后:

enter image description here

屏幕截图#2:一旦用户点击该项目播放歌曲

enter image description here

我不太确定是什么导致相册最初是空白的。看着 AlbumArtCache.java我看不到任何可能导致此问题的关于 OnClickListener 的限制。

有什么解决这个问题的建议吗?

最佳答案

cache.getIconImage(url) 实际上并不获取 url 并将其存储在缓存中。它返回当前值或 null。相反,您必须调用 AlbumArtCache#fetch(String url, FetchListener listener)

一个很好的原型(prototype)在 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);
}

关于java - Android万能音乐播放器在MediaItem ViewHolder中添加专辑封面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756883/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com