From 311769a78482e7ed18d6a629feca1e5add656003 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Thu, 23 Apr 2015 22:06:51 +0200 Subject: [PATCH] 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;