Made some progress switching to glide

This commit is contained in:
Karim Abou Zeid 2015-12-31 15:37:47 +01:00
commit 26cf5d8e0f
16 changed files with 255 additions and 355 deletions

View file

@ -10,10 +10,11 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.glide.BitmapPaletteTranscoder;
import com.kabouzeid.gramophone.glide.BitmapPaletteWrapper;
import com.kabouzeid.gramophone.glide.PhonographPaletteTarget;
import com.kabouzeid.gramophone.glide.PhonographColoredTarget;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper;
import com.kabouzeid.gramophone.misc.CustomFragmentStatePagerAdapter;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.MusicUtil;
@ -131,47 +132,14 @@ public class AlbumCoverPagerAdapter extends CustomFragmentStatePagerAdapter {
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
.asBitmap()
.transcode(new BitmapPaletteTranscoder(getActivity()), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.error(R.drawable.default_album_art)
.into(new PhonographPaletteTarget(albumCover) {
.into(new PhonographColoredTarget(albumCover) {
@Override
public void onColorReady(int color) {
setColor(color);
}
});
// ImageLoader.getInstance().displayImage(
// MusicUtil.getSongImageLoaderString(song),
// albumCover,
// new DisplayImageOptions.Builder()
// .cacheInMemory(true)
// .showImageOnFail(R.drawable.default_album_art)
// .postProcessor(new BitmapProcessor() {
// @Override
// public Bitmap process(Bitmap bitmap) {
// // don't use set color here, as this is not running on the ui-thread
// color = ColorUtil.generateColor(getActivity(), bitmap);
// return bitmap;
// }
// })
// .build(),
// new SimpleImageLoadingListener() {
// @Override
// public void onLoadingFailed(String imageUri, View view, @Nullable FailReason failReason) {
// if (getActivity() != null) {
// setColor(ColorUtil.resolveColor(getActivity(), R.attr.default_bar_color));
// }
// }
//
// @Override
// public void onLoadingComplete(String imageUri, View view, @Nullable Bitmap loadedImage) {
// if (loadedImage == null) {
// onLoadingFailed(imageUri, view, null);
// return;
// }
// setColor(color);
// }
// }
// );
}
@Override

View file

@ -9,6 +9,8 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
@ -22,8 +24,6 @@ import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.Collections;
@ -94,15 +94,11 @@ public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder
final Album album = (Album) results.get(position);
holder.title.setText(album.title);
holder.text.setText(album.artistName);
ImageLoader.getInstance().displayImage(
MusicUtil.getAlbumImageLoaderString(album),
holder.image,
new DisplayImageOptions.Builder()
.cacheInMemory(true)
.showImageOnFail(R.drawable.default_album_art)
.resetViewBeforeLoading(true)
.build()
);
Glide.with(activity)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.id))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.error(R.drawable.default_album_art)
.into(holder.image);
break;
case ARTIST:
final Artist artist = (Artist) results.get(position);
@ -112,15 +108,16 @@ public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder
holder.image.setImageResource(R.drawable.default_artist_image);
break;
}
ImageLoader.getInstance().displayImage(MusicUtil.getArtistImageLoaderString(artist, false),
holder.image,
new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.resetViewBeforeLoading(true)
.showImageOnFail(R.drawable.default_artist_image)
.build()
);
// TODO Glide
// ImageLoader.getInstance().displayImage(MusicUtil.getArtistImageLoaderString(artist, false),
// holder.image,
// new DisplayImageOptions.Builder()
// .cacheInMemory(true)
// .cacheOnDisk(true)
// .resetViewBeforeLoading(true)
// .showImageOnFail(R.drawable.default_artist_image)
// .build()
// );
break;
case SONG:
final Song song = (Song) results.get(position);

View file

@ -1,6 +1,5 @@
package com.kabouzeid.gramophone.adapter.album;
import android.graphics.Bitmap;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@ -11,11 +10,16 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.base.AbsMultiSelectAdapter;
import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder;
import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog;
import com.kabouzeid.gramophone.dialogs.DeleteSongsDialog;
import com.kabouzeid.gramophone.glide.PhonographColoredTarget;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.interfaces.CabHolder;
import com.kabouzeid.gramophone.loader.AlbumSongLoader;
@ -24,14 +28,6 @@ import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.LoadedFrom;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.imageaware.ImageAware;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.process.BitmapProcessor;
import java.util.ArrayList;
import java.util.List;
@ -114,38 +110,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
holder.text.setText(getAlbumText(album));
}
ImageLoader.getInstance().displayImage(
getAlbumImageLoaderUri(album),
holder.image,
new DisplayImageOptions.Builder()
.cacheInMemory(true)
.showImageOnFail(R.drawable.default_album_art)
.resetViewBeforeLoading(true)
.postProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
holder.paletteColor = ColorUtil.generateColor(activity, bitmap);
return bitmap;
}
})
.displayer(new FadeInBitmapDisplayer(FADE_IN_TIME, true, true, false) {
@Override
public void display(Bitmap bitmap, ImageAware imageAware, LoadedFrom loadedFrom) {
super.display(bitmap, imageAware, loadedFrom);
if (usePalette)
setColors(holder.paletteColor, holder);
}
})
.build(),
new SimpleImageLoadingListener() {
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
FadeInBitmapDisplayer.animate(view, FADE_IN_TIME);
if (usePalette)
setColors(defaultBarColor, holder);
}
}
);
loadAlbumCover(album, holder);
}
private void setColors(int color, ViewHolder holder) {
@ -160,6 +125,23 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
}
}
protected void loadAlbumCover(Album album, final ViewHolder holder) {
if (holder.image == null) return;
Glide.with(activity)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.id))
.asBitmap()
.transcode(new BitmapPaletteTranscoder(activity), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.error(R.drawable.default_album_art)
.into(new PhonographColoredTarget(holder.image) {
@Override
public void onColorReady(int color) {
if (usePalette)
setColors(color, holder);
}
});
}
@Override
public int getItemCount() {
return dataSet.size();

View file

@ -1,6 +1,5 @@
package com.kabouzeid.gramophone.adapter.artist;
import android.graphics.Bitmap;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@ -24,14 +23,6 @@ import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.LoadedFrom;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.imageaware.ImageAware;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.process.BitmapProcessor;
import java.util.ArrayList;
import java.util.List;
@ -87,8 +78,8 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
final Artist artist = dataSet.get(position);
final int defaultBarColor = ColorUtil.resolveColor(activity, R.attr.default_bar_color);
setColors(defaultBarColor, holder);
// final int defaultBarColor = ColorUtil.resolveColor(activity, R.attr.default_bar_color);
// setColors(defaultBarColor, holder);
boolean isChecked = isChecked(artist);
holder.itemView.setActivated(isChecked);
@ -104,42 +95,7 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
}
holder.itemView.setActivated(isChecked(artist));
if (holder.image == null) {
return;
}
ImageLoader.getInstance().displayImage(MusicUtil.getArtistImageLoaderString(artist, false),
holder.image,
new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.resetViewBeforeLoading(true)
.showImageOnFail(R.drawable.default_artist_image)
.postProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
holder.paletteColor = ColorUtil.generateColor(activity, bitmap);
return bitmap;
}
})
.displayer(new FadeInBitmapDisplayer(FADE_IN_TIME, true, true, false) {
@Override
public void display(Bitmap bitmap, ImageAware imageAware, LoadedFrom loadedFrom) {
super.display(bitmap, imageAware, loadedFrom);
if (usePalette)
setColors(holder.paletteColor, holder);
}
})
.build(),
new SimpleImageLoadingListener() {
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
FadeInBitmapDisplayer.animate(view, FADE_IN_TIME);
if (usePalette)
setColors(defaultBarColor, holder);
}
}
);
loadArtistImage(artist, holder);
}
private void setColors(int color, ViewHolder holder) {
@ -154,6 +110,43 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
}
}
protected void loadArtistImage(Artist artist, final ViewHolder holder) {
if (holder.image == null) return;
//TODO Glide
// ImageLoader.getInstance().displayImage(MusicUtil.getArtistImageLoaderString(artist, false),
// holder.image,
// new DisplayImageOptions.Builder()
// .cacheInMemory(true)
// .cacheOnDisk(true)
// .resetViewBeforeLoading(true)
// .showImageOnFail(R.drawable.default_artist_image)
// .postProcessor(new BitmapProcessor() {
// @Override
// public Bitmap process(Bitmap bitmap) {
// holder.paletteColor = ColorUtil.generateColor(activity, bitmap);
// return bitmap;
// }
// })
// .displayer(new FadeInBitmapDisplayer(FADE_IN_TIME, true, true, false) {
// @Override
// public void display(Bitmap bitmap, ImageAware imageAware, LoadedFrom loadedFrom) {
// super.display(bitmap, imageAware, loadedFrom);
// if (usePalette)
// setColors(holder.paletteColor, holder);
// }
// })
// .build(),
// new SimpleImageLoadingListener() {
// @Override
// public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
// FadeInBitmapDisplayer.animate(view, FADE_IN_TIME);
// if (usePalette)
// setColors(ColorUtil.resolveColor(activity, R.attr.default_bar_color), holder);
// }
// }
// );
}
@Override
public int getItemCount() {
return dataSet.size();

View file

@ -64,4 +64,9 @@ public class AlbumSongAdapter extends SongAdapter {
}
}
}
@Override
protected void loadAlbumCover(Song song, SongAdapter.ViewHolder holder) {
// We don't want to load it in this adapter
}
}

View file

@ -64,7 +64,7 @@ public class PlayingQueueAdapter extends SongAdapter implements DraggableItemAda
@Override
protected void loadAlbumCover(Song song, SongAdapter.ViewHolder holder) {
// We don't need to load it in this adapter
// We don't want to load it in this adapter
}
public void swapDataSet(ArrayList<Song> dataSet, int position) {

View file

@ -1,6 +1,5 @@
package com.kabouzeid.gramophone.adapter.song;
import android.graphics.Bitmap;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@ -12,11 +11,16 @@ import android.view.View;
import android.view.ViewGroup;
import com.afollestad.materialcab.MaterialCab;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.base.AbsMultiSelectAdapter;
import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder;
import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog;
import com.kabouzeid.gramophone.dialogs.DeleteSongsDialog;
import com.kabouzeid.gramophone.glide.PhonographColoredTarget;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.menu.SongMenuHelper;
import com.kabouzeid.gramophone.interfaces.CabHolder;
@ -24,14 +28,6 @@ import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.LoadedFrom;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.imageaware.ImageAware;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.process.BitmapProcessor;
import java.util.ArrayList;
@ -93,7 +89,7 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
final Song song = dataSet.get(position);
setColors(ColorUtil.resolveColor(activity, R.attr.default_bar_color), holder);
// setColors(ColorUtil.resolveColor(activity, R.attr.default_bar_color), holder);
boolean isChecked = isChecked(song);
holder.itemView.setActivated(isChecked);
@ -126,38 +122,19 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
protected void loadAlbumCover(Song song, final ViewHolder holder) {
if (holder.image == null) return;
ImageLoader.getInstance().displayImage(
getSongImageLoaderUri(song),
holder.image,
new DisplayImageOptions.Builder()
.cacheInMemory(true)
.showImageOnFail(R.drawable.default_album_art)
.resetViewBeforeLoading(true)
.postProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
holder.paletteColor = ColorUtil.generateColor(activity, bitmap);
return bitmap;
}
})
.displayer(new FadeInBitmapDisplayer(FADE_IN_TIME, true, true, false) {
@Override
public void display(Bitmap bitmap, ImageAware imageAware, LoadedFrom loadedFrom) {
super.display(bitmap, imageAware, loadedFrom);
if (usePalette)
setColors(holder.paletteColor, holder);
}
})
.build(),
new SimpleImageLoadingListener() {
Glide.with(activity)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
.asBitmap()
.transcode(new BitmapPaletteTranscoder(activity), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.error(R.drawable.default_album_art)
.into(new PhonographColoredTarget(holder.image) {
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
FadeInBitmapDisplayer.animate(view, FADE_IN_TIME);
public void onColorReady(int color) {
if (usePalette)
setColors(ColorUtil.resolveColor(activity, R.attr.default_bar_color), holder);
setColors(color, holder);
}
}
);
});
}
protected String getSongTitle(Song song) {