【问题标题】:Android universal music player add album cover in the MediaItemViewHolderAndroid通用音乐播放器在MediaItemViewHolder中添加专辑封面
【发布时间】:2015-08-14 09:24:58
【问题描述】:

不确定这里有多少人熟悉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:一旦应用程序加载并且用户没有点击任何项目:

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

我不确定是什么导致专辑最初是空白的。查看AlbumArtCache.java 我看不到任何可能导致此问题的有关 OnClickListener 的限制。

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

【问题讨论】:

    标签: java android android-imageview android-bitmap


    【解决方案1】:

    cache.getIconImage(url) 实际上并没有获取 url 并将其存储在缓存中。它返回当前值或 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);
    }
    

    【讨论】:

    • @nagesh-susaria 我试图在我的本地副本上试一试,但我得到了这样的结果:drive.google.com/file/d/0BycOIcYbBvF_WVpCcUJCcEtCSG8/… 我尝试了不同的实现方式,但得到了相同的结果 - 我我遇到了一个错误(我有 Android 5.1.1)或者这是一个 PEBCAK 问题,哈哈。
    • 你的 onFetched(..) 被调用了吗?您可以添加一个调试语句以查看它是否到达那里。如果不看代码,我不知道可能是什么问题。
    • 是的 - 我今天会调试这个 - 谢谢你的提示。
    • @avluis 你的问题解决了吗?如果没有,请查看 xml 文件并删除图像的色调。
    • @NageshSusarla 请检查:stackoverflow.com/questions/34607919/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多