Use disk cache

This commit is contained in:
Karim Abou Zeid 2016-01-02 23:57:14 +01:00
commit 533708e63d
18 changed files with 77 additions and 94 deletions

View file

@ -19,6 +19,7 @@ import com.afollestad.materialdialogs.util.DialogUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.song.AlbumSongAdapter;
@ -149,16 +150,17 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
albumTitleView.setText(album.getTitle());
setUpRecyclerViewView();
setUpSongsAdapter();
setUpAlbumArtAndApplyPalette();
loadAlbumCover();
}
private void setUpAlbumArtAndApplyPalette() {
private void loadAlbumCover() {
Glide.with(this)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId()))
.asBitmap()
.transcode(new BitmapPaletteTranscoder(this), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.default_album_art)
.signature(new MediaStoreSignature("", album.getDateModified(), 0))
.into(new PhonographColoredTarget(albumArtImageView) {
@Override
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
@ -242,12 +244,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
});
}
private void reloadDataSet() {
adapter.swapDataSet(album.songs);
}
private void reloadAlbum() {
private void refresh() {
album = AlbumLoader.getAlbum(this, album.getId());
albumTitleView.setText(album.getTitle());
loadAlbumCover();
adapter.swapDataSet(album.songs);
}
@Override
@ -302,9 +303,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TAG_EDITOR_REQUEST) {
getAlbumFromIntentExtras();
albumTitleView.setText(album.getTitle());
setUpAlbumArtAndApplyPalette();
refresh();
setResult(RESULT_OK);
}
}
@ -349,6 +348,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
@Override
public void onMediaStoreChanged() {
super.onMediaStoreChanged();
reloadDataSet();
refresh();
}
}

View file

@ -37,6 +37,7 @@ import com.afollestad.materialcab.MaterialCab;
import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.PagerAdapter;
import com.kabouzeid.gramophone.dialogs.ChangelogDialog;
@ -276,9 +277,10 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
((TextView) navigationDrawerHeader.findViewById(R.id.text)).setText(song.artistName);
Glide.with(this)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.default_album_art)
.animate(android.R.anim.fade_in)
.signature(new MediaStoreSignature("", song.dateModified, 0))
.into(((ImageView) navigationDrawerHeader.findViewById(R.id.image)));
} else {
if (navigationDrawerHeader != null) {

View file

@ -19,7 +19,6 @@ import android.view.MenuItem;
import android.view.View;
import com.afollestad.materialdialogs.color.ColorChooserDialog;
import com.bumptech.glide.Glide;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.prefs.ColorChooserPreference;
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
@ -194,15 +193,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
});
}
Preference ignoreMediaStoreArtwork = findPreference("ignore_media_store_artwork");
ignoreMediaStoreArtwork.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Glide.get(getActivity()).clearMemory();
return true;
}
});
Preference equalizer = findPreference("equalizer");
if (!hasEqualizer()) {
equalizer.setEnabled(false);

View file

@ -22,10 +22,8 @@ import android.view.View;
import android.view.animation.OvershootInterpolator;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
import com.bumptech.glide.Glide;
import com.github.ksoichiro.android.observablescrollview.ObservableScrollView;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks;
@ -275,7 +273,11 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
}
protected void setImageBitmap(@Nullable final Bitmap bitmap, int bgColor) {
image.setImageBitmap(bitmap);
if (bitmap == null) {
image.setImageResource(R.drawable.default_album_art);
} else {
image.setImageBitmap(bitmap);
}
setColors(bgColor);
}
@ -355,11 +357,8 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
});
if (deleteArtwork) {
MusicUtil.deleteAlbumArt(AbsTagEditorActivity.this, getId());
Glide.get(AbsTagEditorActivity.this).clearMemory();
Toast.makeText(AbsTagEditorActivity.this, R.string.tag_editor_restart_notice, Toast.LENGTH_SHORT).show();
} else if (artwork != null) {
Glide.get(AbsTagEditorActivity.this).clearMemory();
Toast.makeText(AbsTagEditorActivity.this, R.string.tag_editor_restart_notice, Toast.LENGTH_SHORT).show();
// AlbumTagEditorActivity already inserts the album cover for us
}
rescanMediaAndQuitOnFinish();
}

View file

@ -128,8 +128,7 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
@Override
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
ColorUtil.getColor(resource.getPalette(), Color.TRANSPARENT);
albumArtBitmap = resource.getBitmap();
albumArtBitmap = getResizedAlbumCover(resource.getBitmap(), 2048);
setImageBitmap(albumArtBitmap, ColorUtil.getColor(resource.getPalette(), ColorUtil.resolveColor(AlbumTagEditorActivity.this, R.attr.default_bar_color)));
deleteAlbumArt = false;
dataChanged();
@ -215,7 +214,7 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
.transcode(new BitmapPaletteTranscoder(AlbumTagEditorActivity.this), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(new SimpleTarget<BitmapPaletteWrapper>() {
.into(new SimpleTarget<BitmapPaletteWrapper>(4097, 4097) {
@Override
public void onLoadFailed(Exception e, Drawable errorDrawable) {
super.onLoadFailed(e, errorDrawable);
@ -226,7 +225,7 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
@Override
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
ColorUtil.getColor(resource.getPalette(), Color.TRANSPARENT);
albumArtBitmap = resource.getBitmap();
albumArtBitmap = getResizedAlbumCover(resource.getBitmap(), 2048);
setImageBitmap(albumArtBitmap, ColorUtil.getColor(resource.getPalette(), ColorUtil.resolveColor(AlbumTagEditorActivity.this, R.attr.default_bar_color)));
deleteAlbumArt = false;
dataChanged();