Replaced UIL with Picasso
Huge replacement Hopefully better performance
This commit is contained in:
parent
f3c629e1c6
commit
cfce92535b
27 changed files with 398 additions and 457 deletions
|
|
@ -2,11 +2,13 @@ package com.kabouzeid.gramophone.adapter;
|
|||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.support.v7.graphics.Palette;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
|
|
@ -15,9 +17,8 @@ import com.kabouzeid.gramophone.util.MusicUtil;
|
|||
import com.kabouzeid.gramophone.util.Util;
|
||||
import com.kabouzeid.gramophone.util.ViewUtil;
|
||||
import com.kabouzeid.gramophone.view.SquareImageView;
|
||||
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||
import com.nostra13.universalimageloader.core.assist.FailReason;
|
||||
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
|
||||
import com.squareup.picasso.Callback;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -38,43 +39,48 @@ public class AlbumViewGridAdapter extends ArrayAdapter<Album> {
|
|||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
final Album album = getItem(position);
|
||||
final ViewHolder viewHolder;
|
||||
|
||||
if (convertView == null) {
|
||||
convertView = LayoutInflater.from(context).inflate(R.layout.album_tile, parent, false);
|
||||
|
||||
viewHolder = new ViewHolder();
|
||||
viewHolder.image = (SquareImageView) convertView.findViewById(R.id.album_art);
|
||||
viewHolder.title = (TextView) convertView.findViewById(R.id.album_title);
|
||||
viewHolder.artist = (TextView) convertView.findViewById(R.id.album_interpret);
|
||||
viewHolder.footer = convertView.findViewById(R.id.footer);
|
||||
|
||||
convertView.setTag(viewHolder);
|
||||
} else {
|
||||
viewHolder = (ViewHolder) convertView.getTag();
|
||||
}
|
||||
final SquareImageView albumArt = (SquareImageView) convertView.findViewById(R.id.album_art);
|
||||
final TextView title = (TextView) convertView.findViewById(R.id.album_title);
|
||||
final TextView artist = (TextView) convertView.findViewById(R.id.album_interpret);
|
||||
final View footer = convertView.findViewById(R.id.footer);
|
||||
|
||||
title.setText(album.title);
|
||||
artist.setText(album.artistName);
|
||||
if (usePalette) resetColors(viewHolder.title, viewHolder.artist, viewHolder.footer);
|
||||
viewHolder.title.setText(album.title);
|
||||
viewHolder.artist.setText(album.artistName);
|
||||
|
||||
ImageLoader.getInstance().displayImage(MusicUtil.getAlbumArtUri(album.id).toString(), albumArt, new ImageLoadingListener() {
|
||||
@Override
|
||||
public void onLoadingStarted(String imageUri, View view) {
|
||||
albumArt.setImageDrawable(null);
|
||||
}
|
||||
Picasso.with(context)
|
||||
.load(MusicUtil.getAlbumArtUri(album.id))
|
||||
.placeholder(R.drawable.default_album_art)
|
||||
.error(R.drawable.default_album_art)
|
||||
.into(viewHolder.image, new Callback.EmptyCallback(){
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
super.onSuccess();
|
||||
if(usePalette) {
|
||||
final Bitmap bitmap = ((BitmapDrawable) viewHolder.image.getDrawable()).getBitmap();
|
||||
if (bitmap != null) applyPalette(bitmap, viewHolder.title, viewHolder.artist, viewHolder.footer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
|
||||
if (usePalette) {
|
||||
paletteBugFixBlackAndWhite(title, artist, footer);
|
||||
}
|
||||
albumArt.setImageResource(R.drawable.default_album_art);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
|
||||
if (usePalette) {
|
||||
applyPalette(loadedImage, title, artist, footer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingCancelled(String imageUri, View view) {
|
||||
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onError() {
|
||||
super.onError();
|
||||
if(usePalette) {
|
||||
paletteBlackAndWhite(viewHolder.title, viewHolder.artist, viewHolder.footer);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return convertView;
|
||||
}
|
||||
|
|
@ -87,19 +93,32 @@ public class AlbumViewGridAdapter extends ArrayAdapter<Album> {
|
|||
if (vibrantSwatch != null) {
|
||||
title.setTextColor(vibrantSwatch.getTitleTextColor());
|
||||
artist.setTextColor(vibrantSwatch.getTitleTextColor());
|
||||
ViewUtil.animateViewColor(footer, getContext().getResources().getColor(R.color.materialmusic_default_bar_color),
|
||||
vibrantSwatch.getRgb());
|
||||
ViewUtil.animateViewColor(footer, getContext().getResources().getColor(R.color.materialmusic_default_bar_color),vibrantSwatch.getRgb());
|
||||
} else {
|
||||
paletteBugFixBlackAndWhite(title, artist, footer);
|
||||
paletteBlackAndWhite(title, artist, footer);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void paletteBugFixBlackAndWhite(TextView title, TextView artist, View footer) {
|
||||
private void paletteBlackAndWhite(TextView title, TextView artist, View footer) {
|
||||
title.setTextColor(Util.resolveColor(context, R.attr.title_text_color));
|
||||
artist.setTextColor(Util.resolveColor(context, R.attr.caption_text_color));
|
||||
int defaultBarColor = getContext().getResources().getColor(R.color.materialmusic_default_bar_color);
|
||||
ViewUtil.animateViewColor(footer, defaultBarColor, defaultBarColor);
|
||||
}
|
||||
|
||||
private void resetColors(TextView title, TextView artist, View footer){
|
||||
title.setTextColor(Util.resolveColor(context, R.attr.title_text_color));
|
||||
artist.setTextColor(Util.resolveColor(context, R.attr.caption_text_color));
|
||||
int defaultBarColor = getContext().getResources().getColor(R.color.materialmusic_default_bar_color);
|
||||
footer.setBackgroundColor(defaultBarColor);
|
||||
}
|
||||
|
||||
static class ViewHolder {
|
||||
ImageView image;
|
||||
TextView title;
|
||||
TextView artist;
|
||||
View footer;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,8 +10,9 @@ import android.widget.ImageView;
|
|||
import android.widget.TextView;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistThumbnailLoader;
|
||||
import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistThumbnailUrlLoader;
|
||||
import com.kabouzeid.gramophone.model.Artist;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -39,19 +40,13 @@ public class ArtistViewListAdapter extends ArrayAdapter<Artist> {
|
|||
artistName.setText(artist.name);
|
||||
artistArt.setImageResource(R.drawable.default_artist_image);
|
||||
|
||||
final Object tag = artist.name;
|
||||
artistArt.setTag(tag);
|
||||
|
||||
LastFMArtistThumbnailLoader.loadArtistThumbnail(context, artist.name, new LastFMArtistThumbnailLoader.ArtistThumbnailLoaderCallback() {
|
||||
LastFMArtistThumbnailUrlLoader.loadArtistThumbnailUrl(context, artist.name, false, new LastFMArtistThumbnailUrlLoader.ArtistThumbnailUrlLoaderCallback() {
|
||||
@Override
|
||||
public void onArtistThumbnailLoaded(Bitmap thumbnail) {
|
||||
if (artistArt.getTag().equals(tag)) {
|
||||
if (thumbnail != null) {
|
||||
artistArt.setImageBitmap(thumbnail);
|
||||
} else {
|
||||
artistArt.setImageResource(R.drawable.default_artist_image);
|
||||
}
|
||||
}
|
||||
public void onArtistThumbnailUrlLoaded(String url) {
|
||||
Picasso.with(getContext())
|
||||
.load(url)
|
||||
.placeholder(R.drawable.default_artist_image)
|
||||
.into(artistArt);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -16,9 +16,8 @@ import com.kabouzeid.gramophone.loader.SongFilePathLoader;
|
|||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
|
||||
import com.kabouzeid.gramophone.util.ImageLoaderUtil;
|
||||
import com.kabouzeid.gramophone.util.MusicUtil;
|
||||
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
|
@ -81,7 +80,10 @@ public class SongViewListAdapter extends SongAdapter {
|
|||
});
|
||||
|
||||
songTitle.setText(song.title);
|
||||
ImageLoader.getInstance().displayImage(MusicUtil.getAlbumArtUri(song.albumId).toString(), albumArt, new ImageLoaderUtil.defaultAlbumArtOnFailed());
|
||||
Picasso.with(getContext())
|
||||
.load(MusicUtil.getAlbumArtUri(song.albumId))
|
||||
.placeholder(R.drawable.default_album_art)
|
||||
.into(albumArt);
|
||||
|
||||
return convertView;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue