Java Android universal music player在MediaItemViewHolder中添加专辑封面
不确定这里有多少人熟悉,但我对在文件中显示相册有意见 这是我修改后的基本结构:Java Android universal music player在MediaItemViewHolder中添加专辑封面,java,android,android-imageview,android-bitmap,Java,Android,Android Imageview,Android Bitmap,不确定这里有多少人熟悉,但我对在文件中显示相册有意见 这是我修改后的基本结构: // 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
// 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:一旦用户点击该项目播放歌曲
我真的不确定是什么原因导致专辑最初是空白的。看一下,我看不出任何关于OnClickListener的限制会导致这种情况
有没有解决此问题的建议?缓存。getIconImage(url)
实际上不会获取url并将其存储在缓存中。它返回当前值或null。相反,您必须调用AlbumArtCache\fetch(字符串url,FetchListener侦听器)
这方面的一个很好的原型是FullScreenPlayerActivity\fetchImageAsync(MediaDescription)
以下是当项目可播放时,您可以在方法中执行的操作
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);
}
@nagesh susaria我试图在我的本地副本上尝试一下,但我得到了这样的结果:我尝试了不同的实现方法,但得到了相同的结果-我是遇到了错误(我有Android 5.1.1)还是这是一个PEBCAK问题,哈哈。你的onFetched(…)被调用了吗?您可以添加一个调试语句,看看它是否到达那里。我不知道在没有查看代码的情况下会出现什么问题。是的-我今天将对此进行调试-谢谢你的提示。@avluis你解决问题了吗?如果没有,请查看xml文件并删除图像的色调。@NageshSusarla请检查: