From 744d5e12a6e80b45909009cabf0a1010ae73174d Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Thu, 23 Apr 2015 19:25:30 +0200 Subject: [PATCH 1/2] Enabled all caches and added custom signatures --- .../kabouzeid/gramophone/adapter/AlbumAdapter.java | 4 ++-- .../gramophone/adapter/ArtistAlbumAdapter.java | 4 ++-- .../adapter/songadapter/ArtistSongAdapter.java | 4 ++-- .../adapter/songadapter/PlaylistSongAdapter.java | 4 ++-- .../gramophone/adapter/songadapter/SongAdapter.java | 4 ++-- .../kabouzeid/gramophone/loader/AlbumLoader.java | 13 +++++++++---- .../gramophone/loader/AlbumSongLoader.java | 7 +++++-- .../gramophone/loader/ArtistAlbumLoader.java | 7 +++++-- .../gramophone/loader/ArtistSongLoader.java | 7 +++++-- .../gramophone/loader/PlaylistSongLoader.java | 7 +++++-- .../com/kabouzeid/gramophone/loader/SongLoader.java | 13 +++++++++---- .../java/com/kabouzeid/gramophone/model/Album.java | 8 ++++++-- .../kabouzeid/gramophone/model/PlaylistSong.java | 8 ++++---- .../java/com/kabouzeid/gramophone/model/Song.java | 7 +++++-- .../ui/activities/AlbumDetailActivity.java | 4 ++-- .../gramophone/ui/activities/MainActivity.java | 4 ++-- .../ui/activities/MusicControllerActivity.java | 4 ++-- 17 files changed, 69 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java index 001f1407..ca196aba 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java @@ -14,12 +14,12 @@ import android.widget.TextView; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.Request; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.signature.StringSignature; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.loader.AlbumLoader; @@ -71,7 +71,7 @@ public class AlbumAdapter extends RecyclerView.Adapter holder.albumArt.setTag( Glide.with(activity) .loadFromMediaStore(MusicUtil.getAlbumArtUri(album.id)) - .diskCacheStrategy(DiskCacheStrategy.NONE) + .signature(new StringSignature(album.albumArtPath)) .error(R.drawable.default_album_art) .placeholder(R.drawable.default_album_art) .listener(new RequestListener() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAlbumAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAlbumAdapter.java index 08fe77b1..4095f70d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAlbumAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAlbumAdapter.java @@ -10,8 +10,8 @@ import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.Request; +import com.bumptech.glide.signature.StringSignature; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; @@ -61,7 +61,7 @@ public class ArtistAlbumAdapter extends RecyclerView.Adapter { Glide.with(activity) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) - .diskCacheStrategy(DiskCacheStrategy.NONE) + .signature(new StringSignature(String.valueOf(song.dateModified))) .error(R.drawable.default_album_art) .placeholder(R.drawable.default_album_art) .into(albumArt); diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/PlaylistSongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/PlaylistSongAdapter.java index 949ce22a..66c3393d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/PlaylistSongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/PlaylistSongAdapter.java @@ -12,8 +12,8 @@ import android.widget.PopupMenu; import android.widget.TextView; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.Request; +import com.bumptech.glide.signature.StringSignature; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.helper.MenuItemClickHelper; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; @@ -65,7 +65,7 @@ public class PlaylistSongAdapter extends RecyclerView.Adapter { holder.albumArt.setTag( Glide.with(activity) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) - .diskCacheStrategy(DiskCacheStrategy.NONE) + .signature(new StringSignature(String.valueOf(song.dateModified))) .error(R.drawable.default_album_art) .placeholder(R.drawable.default_album_art) .into(holder.albumArt) diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java index 4c08e183..b7a13887 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java @@ -27,8 +27,9 @@ public class AlbumLoader { final int artistId = cursor.getInt(3); final int songCount = cursor.getInt(4); final int year = cursor.getInt(5); + final String albumArtPath = cursor.getString(6); - final Album album = new Album(id, albumName, artist, artistId, songCount, year); + final Album album = new Album(id, albumName, artist, artistId, songCount, year, albumArtPath); albums.add(album); } while (cursor.moveToNext()); } @@ -56,7 +57,9 @@ public class AlbumLoader { /* 4 */ MediaStore.Audio.AlbumColumns.NUMBER_OF_SONGS, /* 5 */ - MediaStore.Audio.AlbumColumns.FIRST_YEAR + MediaStore.Audio.AlbumColumns.FIRST_YEAR, + /* 6 */ + MediaStore.Audio.AlbumColumns.ALBUM_ART }, selection, values, PreferenceUtils.getInstance(context).getAlbumSortOrder()); } @@ -70,8 +73,9 @@ public class AlbumLoader { final int artistId = cursor.getInt(3); final int songCount = cursor.getInt(4); final int year = cursor.getInt(5); + final String albumArtPath = cursor.getString(6); - album = new Album(id, albumName, artist, artistId, songCount, year); + album = new Album(id, albumName, artist, artistId, songCount, year, albumArtPath); } if (cursor != null) { @@ -91,8 +95,9 @@ public class AlbumLoader { final int artistId = cursor.getInt(3); final int songCount = cursor.getInt(4); final int year = cursor.getInt(5); + final String albumArtPath = cursor.getString(6); - final Album album = new Album(id, albumName, artist, artistId, songCount, year); + final Album album = new Album(id, albumName, artist, artistId, songCount, year, albumArtPath); albums.add(album); } while (cursor.moveToNext()); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumSongLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumSongLoader.java index df5d1d11..a931616c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumSongLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumSongLoader.java @@ -27,8 +27,9 @@ public class AlbumSongLoader { final long duration = cursor.getLong(4); final int trackNumber = cursor.getInt(5); final int artistId = cursor.getInt(6); + final long dateModified = cursor.getInt(7); - final Song song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber); + final Song song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber, dateModified); songs.add(song); } while (cursor.moveToNext()); } @@ -53,7 +54,9 @@ public class AlbumSongLoader { /* 5 */ MediaStore.Audio.AudioColumns.TRACK, /* 6 */ - MediaStore.Audio.AudioColumns.ARTIST_ID + MediaStore.Audio.AudioColumns.ARTIST_ID, + /* 7 */ + MediaStore.Audio.AudioColumns.DATE_MODIFIED }, (MediaStore.Audio.AudioColumns.IS_MUSIC + "=1") + " AND " + MediaStore.Audio.AudioColumns.TITLE + " != ''" + " AND " + MediaStore.Audio.AudioColumns.ALBUM_ID + "=" + albumId, null, diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java index 9756bcca..eaa82d0d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java @@ -26,8 +26,9 @@ public class ArtistAlbumLoader { final String artist = cursor.getString(2); final int songCount = cursor.getInt(3); final int year = cursor.getInt(4); + final String albumArtPath = cursor.getString(5); - final Album album = new Album(id, albumName, artist, artistId, songCount, year); + final Album album = new Album(id, albumName, artist, artistId, songCount, year, albumArtPath); albums.add(album); } while (cursor.moveToNext()); } @@ -49,7 +50,9 @@ public class ArtistAlbumLoader { /* 3 */ MediaStore.Audio.AlbumColumns.NUMBER_OF_SONGS, /* 4 */ - MediaStore.Audio.AlbumColumns.FIRST_YEAR + MediaStore.Audio.AlbumColumns.FIRST_YEAR, + /* 5 */ + MediaStore.Audio.AlbumColumns.ALBUM_ART }, null, null, PreferenceUtils.getInstance(context).getArtistAlbumSortOrder()); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistSongLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistSongLoader.java index 2a68191c..3d84ef23 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistSongLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistSongLoader.java @@ -27,8 +27,9 @@ public class ArtistSongLoader { final long duration = cursor.getLong(4); final int trackNumber = cursor.getInt(5); final int albumId = cursor.getInt(6); + final long dateModified = cursor.getInt(7); - final Song song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber); + final Song song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber, dateModified); songs.add(song); } while (cursor.moveToNext()); } @@ -53,7 +54,9 @@ public class ArtistSongLoader { /* 5 */ MediaStore.Audio.AudioColumns.TRACK, /* 6 */ - MediaStore.Audio.AudioColumns.ALBUM_ID + MediaStore.Audio.AudioColumns.ALBUM_ID, + /* 7 */ + MediaStore.Audio.AudioColumns.DATE_MODIFIED }, (MediaStore.Audio.AudioColumns.IS_MUSIC + "=1") + " AND " + MediaStore.Audio.AudioColumns.TITLE + " != ''" + " AND " + MediaStore.Audio.AudioColumns.ARTIST_ID + "=" + artistId, null, diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/PlaylistSongLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/PlaylistSongLoader.java index 5b201d99..619daf1e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/PlaylistSongLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/PlaylistSongLoader.java @@ -26,8 +26,9 @@ public class PlaylistSongLoader { final int albumId = cursor.getInt(6); final int artistId = cursor.getInt(7); final int idInPlaylist = cursor.getInt(8); + final long dateModified = cursor.getInt(9); - final PlaylistSong song = new PlaylistSong(id, albumId, artistId, songName, artist, album, duration, trackNumber, playlistID, idInPlaylist); + final PlaylistSong song = new PlaylistSong(id, albumId, artistId, songName, artist, album, duration, trackNumber, playlistID, idInPlaylist, dateModified); songs.add(song); } while (cursor.moveToNext()); @@ -59,7 +60,9 @@ public class PlaylistSongLoader { /* 7 */ AudioColumns.ARTIST_ID, /* 8 */ - MediaStore.Audio.Playlists.Members._ID + MediaStore.Audio.Playlists.Members._ID, + /* 9 */ + MediaStore.Audio.AudioColumns.DATE_MODIFIED }, (AudioColumns.IS_MUSIC + "=1") + " AND " + AudioColumns.TITLE + " != ''", null, MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/SongLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/SongLoader.java index 0bc8607c..9c7e00b5 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/SongLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/SongLoader.java @@ -30,8 +30,9 @@ public class SongLoader { final int trackNumber = cursor.getInt(5); final int artistId = cursor.getInt(6); final int albumId = cursor.getInt(7); + final long dateModified = cursor.getInt(8); - final Song song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber); + final Song song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber, dateModified); songs.add(song); } while (cursor.moveToNext()); } @@ -67,7 +68,9 @@ public class SongLoader { /* 6 */ MediaStore.Audio.AudioColumns.ARTIST_ID, /* 7 */ - MediaStore.Audio.AudioColumns.ALBUM_ID + MediaStore.Audio.AudioColumns.ALBUM_ID, + /* 8 */ + MediaStore.Audio.AudioColumns.DATE_MODIFIED }, finalSelection, values, PreferenceUtils.getInstance(context).getSongSortOrder()); } @@ -84,8 +87,9 @@ public class SongLoader { final int trackNumber = cursor.getInt(5); final int artistId = cursor.getInt(6); final int albumId = cursor.getInt(7); + final long dateModified = cursor.getInt(8); - final Song song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber); + final Song song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber, dateModified); songs.add(song); } while (cursor.moveToNext()); } @@ -107,7 +111,8 @@ public class SongLoader { final int trackNumber = cursor.getInt(5); final int artistId = cursor.getInt(6); final int albumId = cursor.getInt(7); - song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber); + final long dateModified = cursor.getInt(8); + song = new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber, dateModified); } if (cursor != null) { cursor.close(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/Album.java b/app/src/main/java/com/kabouzeid/gramophone/model/Album.java index 3ab4d6cf..b674c284 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Album.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Album.java @@ -6,27 +6,31 @@ package com.kabouzeid.gramophone.model; public class Album { public final int id; - public int artistId; + public final int artistId; public final String title; public final String artistName; public final int songCount; public final int year; + public final String albumArtPath; //used as cache key public Album(final int id, final String title, final String artistName, final int artistId, - final int songNumber, final int albumYear) { + final int songNumber, final int albumYear, final String albumArtPath) { this.id = id; this.title = title; this.artistName = artistName; this.artistId = artistId; songCount = songNumber; year = albumYear; + this.albumArtPath = albumArtPath != null ? albumArtPath : ""; } public Album() { this.id = -1; this.title = ""; this.artistName = ""; + this.artistId = -1; songCount = -1; year = -1; + this.albumArtPath = ""; } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/PlaylistSong.java b/app/src/main/java/com/kabouzeid/gramophone/model/PlaylistSong.java index 694d4e17..48e71ad8 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/PlaylistSong.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/PlaylistSong.java @@ -2,11 +2,11 @@ package com.kabouzeid.gramophone.model; public class PlaylistSong extends Song { public final int playlistId; - public int idInPlayList; + public final int idInPlayList; public PlaylistSong(final int id, final int albumId, final int artistId, final String title, final String artistName, - final String albumName, final long duration, final int trackNumber, final int playlistId, final int idInPlayList) { - super(id, albumId, artistId, title, artistName, albumName, duration, trackNumber); + final String albumName, final long duration, final int trackNumber, final int playlistId, final int idInPlayList, final long dateModified) { + super(id, albumId, artistId, title, artistName, albumName, duration, trackNumber, dateModified); this.playlistId = playlistId; this.idInPlayList = idInPlayList; } @@ -14,6 +14,6 @@ public class PlaylistSong extends Song { public PlaylistSong() { super(); playlistId = -1; - id = -1; + idInPlayList = -1; } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/Song.java b/app/src/main/java/com/kabouzeid/gramophone/model/Song.java index 58007c3d..82ff617d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Song.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Song.java @@ -7,7 +7,7 @@ import java.io.Serializable; */ public class Song implements Serializable { - public int id; + public final int id; public final int albumId; public final int artistId; public final String title; @@ -15,9 +15,10 @@ public class Song implements Serializable { public final String albumName; public final long duration; public final int trackNumber; + public final long dateModified; //used as cache key public Song(final int id, final int albumId, final int artistId, final String title, final String artistName, - final String albumName, final long duration, final int trackNumber) { + final String albumName, final long duration, final int trackNumber, final long dateModified) { this.id = id; this.albumId = albumId; this.artistId = artistId; @@ -26,6 +27,7 @@ public class Song implements Serializable { this.albumName = albumName; this.duration = duration; this.trackNumber = trackNumber; + this.dateModified = dateModified; } public Song() { @@ -37,5 +39,6 @@ public class Song implements Serializable { this.albumName = ""; this.duration = -1; this.trackNumber = -1; + this.dateModified = -1; } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 6c593dc9..f62261fa 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -19,11 +19,11 @@ import android.widget.TextView; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.signature.StringSignature; import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; @@ -177,7 +177,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH private void setUpAlbumArtAndApplyPalette() { Glide.with(AlbumDetailActivity.this) .loadFromMediaStore(MusicUtil.getAlbumArtUri(album.id)) - .diskCacheStrategy(DiskCacheStrategy.NONE) + .signature(new StringSignature(album.albumArtPath)) .error(R.drawable.default_album_art) .listener(new RequestListener() { @TargetApi(Build.VERSION_CODES.LOLLIPOP) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 6ccc2980..4a78c3a6 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -28,7 +28,7 @@ import android.widget.FrameLayout; import com.afollestad.materialdialogs.ThemeSingleton; import com.astuetz.PagerSlidingTabStrip; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.signature.StringSignature; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.PagerAdapter; import com.kabouzeid.gramophone.dialogs.AboutDialog; @@ -207,7 +207,7 @@ public class MainActivity extends AbsFabActivity navigationDrawerFragment.getSongArtist().setText(song.artistName); Glide.with(this) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) - .diskCacheStrategy(DiskCacheStrategy.NONE) + .signature(new StringSignature(String.valueOf(song.dateModified))) .error(R.drawable.default_album_art) .placeholder(R.drawable.default_album_art) .into(navigationDrawerFragment.getAlbumArtImageView()); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java index 446c269d..944752c1 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java @@ -24,11 +24,11 @@ import android.widget.Toast; import com.afollestad.materialdialogs.ThemeSingleton; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.signature.StringSignature; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog; @@ -301,7 +301,7 @@ public class MusicControllerActivity extends AbsFabActivity { private void setUpAlbumArtAndApplyPalette() { Glide.with(this) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) - .diskCacheStrategy(DiskCacheStrategy.NONE) + .signature(new StringSignature(String.valueOf(song.dateModified))) .error(R.drawable.default_album_art) .placeholder(R.drawable.default_album_art) .listener(new RequestListener() { From 311769a78482e7ed18d6a629feca1e5add656003 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Thu, 23 Apr 2015 22:06:51 +0200 Subject: [PATCH 2/2] Disabled disk cache for album art and fixed the navigation drawer header image view being out of aspect ration. Scrolling in any list should be buttery smooth now. Had no time for the search rewrite today, gonna do that tomorrow. --- .../gramophone/adapter/AlbumAdapter.java | 2 + .../adapter/ArtistAlbumAdapter.java | 2 + .../songadapter/ArtistSongAdapter.java | 2 + .../songadapter/PlaylistSongAdapter.java | 2 + .../adapter/songadapter/SongAdapter.java | 2 + .../ui/activities/AlbumDetailActivity.java | 2 + .../ui/activities/MainActivity.java | 46 ++++++++++++++----- .../activities/MusicControllerActivity.java | 2 + .../fragments/NavigationDrawerFragment.java | 5 +- 9 files changed, 50 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java index ca196aba..5474c354 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java @@ -14,6 +14,7 @@ import android.widget.TextView; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.Request; @@ -71,6 +72,7 @@ public class AlbumAdapter extends RecyclerView.Adapter holder.albumArt.setTag( Glide.with(activity) .loadFromMediaStore(MusicUtil.getAlbumArtUri(album.id)) + .diskCacheStrategy(DiskCacheStrategy.NONE) .signature(new StringSignature(album.albumArtPath)) .error(R.drawable.default_album_art) .placeholder(R.drawable.default_album_art) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAlbumAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAlbumAdapter.java index 4095f70d..8fed00cd 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAlbumAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAlbumAdapter.java @@ -10,6 +10,7 @@ import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.Request; import com.bumptech.glide.signature.StringSignature; import com.kabouzeid.gramophone.R; @@ -61,6 +62,7 @@ public class ArtistAlbumAdapter extends RecyclerView.Adapter { Glide.with(activity) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) + .diskCacheStrategy(DiskCacheStrategy.NONE) .signature(new StringSignature(String.valueOf(song.dateModified))) .error(R.drawable.default_album_art) .placeholder(R.drawable.default_album_art) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/PlaylistSongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/PlaylistSongAdapter.java index 66c3393d..d111209b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/PlaylistSongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/PlaylistSongAdapter.java @@ -12,6 +12,7 @@ import android.widget.PopupMenu; import android.widget.TextView; import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.Request; import com.bumptech.glide.signature.StringSignature; import com.kabouzeid.gramophone.R; @@ -65,6 +66,7 @@ public class PlaylistSongAdapter extends RecyclerView.Adapter { holder.albumArt.setTag( Glide.with(activity) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) + .diskCacheStrategy(DiskCacheStrategy.NONE) .signature(new StringSignature(String.valueOf(song.dateModified))) .error(R.drawable.default_album_art) .placeholder(R.drawable.default_album_art) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index f62261fa..230de915 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -19,6 +19,7 @@ import android.widget.TextView; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; @@ -177,6 +178,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH private void setUpAlbumArtAndApplyPalette() { Glide.with(AlbumDetailActivity.this) .loadFromMediaStore(MusicUtil.getAlbumArtUri(album.id)) + .diskCacheStrategy(DiskCacheStrategy.NONE) .signature(new StringSignature(album.albumArtPath)) .error(R.drawable.default_album_art) .listener(new RequestListener() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 4a78c3a6..b58ece05 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -28,6 +28,10 @@ import android.widget.FrameLayout; import com.afollestad.materialdialogs.ThemeSingleton; import com.astuetz.PagerSlidingTabStrip; import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.load.resource.drawable.GlideDrawable; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.target.Target; import com.bumptech.glide.signature.StringSignature; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.PagerAdapter; @@ -69,6 +73,8 @@ public class MainActivity extends AbsFabActivity private ViewPager viewPager; private PagerSlidingTabStrip slidingTabLayout; private int currentPage = -1; + private int navigationDrawerImageWidth = -1; + private int navigationDrawerImageHeight = -1; @Override protected void onCreate(Bundle savedInstanceState) { @@ -78,9 +84,9 @@ public class MainActivity extends AbsFabActivity initViews(); navigationDrawerFragment.setUp( - R.id.navigation_drawer, drawerLayout ); + setUpDrawerLayout(); setUpToolBar(); setUpViewPager(); @@ -165,9 +171,19 @@ public class MainActivity extends AbsFabActivity R.string.navigation_drawer_open, R.string.navigation_drawer_close ); + drawerLayout.post(new Runnable() { + @Override + public void run() { + drawerToggle.syncState(); + } + }); + drawerLayout.setDrawerListener(drawerToggle); + } + private void setUpDrawerLayout() { drawerLayout.setStatusBarBackgroundColor(PreferenceUtils .getInstance(this).getThemeColorPrimaryDarker()); + FrameLayout navDrawerFrame = (FrameLayout) findViewById(R.id.nav_drawer_frame); int navDrawerMargin = getResources().getDimensionPixelSize(R.dimen.nav_drawer_margin); DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); @@ -179,13 +195,8 @@ public class MainActivity extends AbsFabActivity navDrawerFrame.setLayoutParams(new DrawerLayout.LayoutParams(navDrawerWidth, DrawerLayout.LayoutParams.MATCH_PARENT, Gravity.START)); - drawerLayout.post(new Runnable() { - @Override - public void run() { - drawerToggle.syncState(); - } - }); - drawerLayout.setDrawerListener(drawerToggle); + navigationDrawerImageWidth = navDrawerWidth; + navigationDrawerImageHeight = getResources().getDimensionPixelSize(R.dimen.navigation_drawer_image_height); } @Override @@ -207,10 +218,23 @@ public class MainActivity extends AbsFabActivity navigationDrawerFragment.getSongArtist().setText(song.artistName); Glide.with(this) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) + .centerCrop() + .diskCacheStrategy(DiskCacheStrategy.NONE) .signature(new StringSignature(String.valueOf(song.dateModified))) - .error(R.drawable.default_album_art) - .placeholder(R.drawable.default_album_art) - .into(navigationDrawerFragment.getAlbumArtImageView()); + .listener(new RequestListener() { + @Override + public boolean onException(Exception e, Uri model, Target target, boolean isFirstResource) { + navigationDrawerFragment.getAlbumArtImageView().setImageResource(R.drawable.default_album_art); + return false; + } + + @Override + public boolean onResourceReady(GlideDrawable resource, Uri model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { + navigationDrawerFragment.getAlbumArtImageView().setImageDrawable(resource); + return false; + } + }) + .into(navigationDrawerImageWidth, navigationDrawerImageHeight); } } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java index 944752c1..021418c4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java @@ -24,6 +24,7 @@ import android.widget.Toast; import com.afollestad.materialdialogs.ThemeSingleton; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; @@ -301,6 +302,7 @@ public class MusicControllerActivity extends AbsFabActivity { private void setUpAlbumArtAndApplyPalette() { Glide.with(this) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) + .diskCacheStrategy(DiskCacheStrategy.NONE) .signature(new StringSignature(String.valueOf(song.dateModified))) .error(R.drawable.default_album_art) .placeholder(R.drawable.default_album_art) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/NavigationDrawerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/NavigationDrawerFragment.java index ddef652e..bf13b720 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/NavigationDrawerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/NavigationDrawerFragment.java @@ -35,7 +35,6 @@ public class NavigationDrawerFragment extends Fragment { private NavigationDrawerItemAdapter drawerAdapter; private DrawerLayout drawerLayout; private RecyclerView drawerRecyclerView; - private View fragmentContainerView; private Button headerButton; private ImageView albumArt; @@ -54,12 +53,10 @@ public class NavigationDrawerFragment extends Fragment { return drawerLayout != null && drawerLayout.isDrawerOpen(Gravity.START); } - public void setUp(int fragmentId, final DrawerLayout drawerLayout) { - fragmentContainerView = getActivity().findViewById(fragmentId); + public void setUp(final DrawerLayout drawerLayout) { this.drawerLayout = drawerLayout; this.drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); - if (!userLearnedDrawer && !fromSavedInstanceState) { this.drawerLayout.openDrawer(Gravity.START); userLearnedDrawer = true;