diff --git a/app/src/main/java/com/kabouzeid/materialmusic/App.java b/app/src/main/java/com/kabouzeid/materialmusic/App.java index b3a23b91..144819d1 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/App.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/App.java @@ -68,12 +68,12 @@ public class App extends Application { return getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT; } - public void addToRequestQueue(Request request) { + public void addToVolleyRequestQueue(Request request) { request.setTag(TAG); - getRequestQueue().add(request); + getVolleyRequestQueue().add(request); } - public RequestQueue getRequestQueue() { + public RequestQueue getVolleyRequestQueue() { if (requestQueue == null) { requestQueue = Volley.newRequestQueue(this); } diff --git a/app/src/main/java/com/kabouzeid/materialmusic/lastfm/album/LastFMAlbumImageLoader.java b/app/src/main/java/com/kabouzeid/materialmusic/lastfm/album/LastFMAlbumImageLoader.java index bcd6e5ee..841f1517 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/lastfm/album/LastFMAlbumImageLoader.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/lastfm/album/LastFMAlbumImageLoader.java @@ -101,7 +101,7 @@ public class LastFMAlbumImageLoader { callback.onAlbumImageLoaded(null, null); } }); - app.addToRequestQueue(albumInfoJSONRequest); + app.addToVolleyRequestQueue(albumInfoJSONRequest); } public static interface AlbumImageLoaderCallback { diff --git a/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistBiographyLoader.java b/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistBiographyLoader.java index 7b43751b..22519de1 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistBiographyLoader.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistBiographyLoader.java @@ -56,7 +56,7 @@ public class LastFMArtistBiographyLoader { callback.onArtistBioLoaded(""); } }); - app.addToRequestQueue(artistInfoJSONRequest); + app.addToVolleyRequestQueue(artistInfoJSONRequest); } public static interface ArtistBioLoaderCallback { diff --git a/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistImageLoader.java b/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistImageLoader.java index c327d5d1..f49700e1 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistImageLoader.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistImageLoader.java @@ -36,7 +36,7 @@ public class LastFMArtistImageLoader { } } else { Log.i(TAG, queryArtist + " is not in cache."); - downloadArtistImage(context, queryArtist, callback); + downloadArtistJSONAndStartImageDownload(context, queryArtist, callback); } } } @@ -71,7 +71,7 @@ public class LastFMArtistImageLoader { } } - private static void downloadArtistImage(final Context context, final String artist, final ArtistImageLoaderCallback callback) { + private static void downloadArtistJSONAndStartImageDownload(final Context context, final String artist, final ArtistImageLoaderCallback callback) { Log.i(TAG, "Downloading details for " + artist); App app = (App) context.getApplicationContext(); String artistUrl = LastFMArtistInfoUtil.getArtistUrl(artist); @@ -89,7 +89,7 @@ public class LastFMArtistImageLoader { callback.onArtistImageLoaded(null); } }); - app.addToRequestQueue(artistInfoJSONRequest); + app.addToVolleyRequestQueue(artistInfoJSONRequest); } public static interface ArtistImageLoaderCallback { diff --git a/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistThumbnailLoader.java b/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistThumbnailLoader.java index d9b54c41..b1851260 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistThumbnailLoader.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/lastfm/artist/LastFMArtistThumbnailLoader.java @@ -89,7 +89,7 @@ public class LastFMArtistThumbnailLoader { callback.onArtistThumbnailLoaded(null); } }); - app.addToRequestQueue(artistInfoJSONRequest); + app.addToVolleyRequestQueue(artistInfoJSONRequest); } public static interface ArtistThumbnailLoaderCallback { diff --git a/app/src/main/java/com/kabouzeid/materialmusic/provider/AlbumJSONStore.java b/app/src/main/java/com/kabouzeid/materialmusic/provider/AlbumJSONStore.java index 07cbd4f7..84f1ddc5 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/provider/AlbumJSONStore.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/provider/AlbumJSONStore.java @@ -70,12 +70,6 @@ public class AlbumJSONStore extends SQLiteOpenHelper { cursor.close(); } return null; - } @Override - public void onCreate(final SQLiteDatabase db) { - db.execSQL("CREATE TABLE IF NOT EXISTS " + AlbumJSONColumns.NAME + - " (" + AlbumJSONColumns.ALBUMANDARTIST_NAME + " TEXT NOT NULL," + - AlbumJSONColumns.JSON + " TEXT NOT NULL);" - ); } public void removeItem(final String albumAndArtistName) { @@ -84,6 +78,12 @@ public class AlbumJSONStore extends SQLiteOpenHelper { albumAndArtistName.trim().toLowerCase() }); + } @Override + public void onCreate(final SQLiteDatabase db) { + db.execSQL("CREATE TABLE IF NOT EXISTS " + AlbumJSONColumns.NAME + + " (" + AlbumJSONColumns.ALBUMANDARTIST_NAME + " TEXT NOT NULL," + + AlbumJSONColumns.JSON + " TEXT NOT NULL);" + ); } public interface AlbumJSONColumns { @@ -94,6 +94,7 @@ public class AlbumJSONStore extends SQLiteOpenHelper { + @Override public void onUpgrade(final SQLiteDatabase db, final int oldVersion, final int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + AlbumJSONColumns.NAME); diff --git a/app/src/main/java/com/kabouzeid/materialmusic/provider/ArtistJSONStore.java b/app/src/main/java/com/kabouzeid/materialmusic/provider/ArtistJSONStore.java index 890675e2..3014db1f 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/provider/ArtistJSONStore.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/provider/ArtistJSONStore.java @@ -70,12 +70,6 @@ public class ArtistJSONStore extends SQLiteOpenHelper { cursor.close(); } return null; - } @Override - public void onCreate(final SQLiteDatabase db) { - db.execSQL("CREATE TABLE IF NOT EXISTS " + ArtistJSONColumns.NAME + - " (" + ArtistJSONColumns.ARTIST_NAME + " TEXT NOT NULL," + - ArtistJSONColumns.JSON + " TEXT NOT NULL);" - ); } public void removeItem(final String artistName) { @@ -84,6 +78,12 @@ public class ArtistJSONStore extends SQLiteOpenHelper { artistName.trim().toLowerCase() }); + } @Override + public void onCreate(final SQLiteDatabase db) { + db.execSQL("CREATE TABLE IF NOT EXISTS " + ArtistJSONColumns.NAME + + " (" + ArtistJSONColumns.ARTIST_NAME + " TEXT NOT NULL," + + ArtistJSONColumns.JSON + " TEXT NOT NULL);" + ); } public interface ArtistJSONColumns { @@ -94,6 +94,7 @@ public class ArtistJSONStore extends SQLiteOpenHelper { + @Override public void onUpgrade(final SQLiteDatabase db, final int oldVersion, final int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + ArtistJSONColumns.NAME); diff --git a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/AlbumDetailActivity.java index b88befeb..0fd51553 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/AlbumDetailActivity.java @@ -1,5 +1,6 @@ package com.kabouzeid.materialmusic.ui.activities; +import android.annotation.SuppressLint; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; @@ -8,7 +9,6 @@ import android.os.Bundle; import android.os.Handler; import android.support.v7.graphics.Palette; import android.support.v7.widget.Toolbar; -import android.transition.Transition; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -33,7 +33,6 @@ import com.kabouzeid.materialmusic.model.Album; import com.kabouzeid.materialmusic.model.Song; import com.kabouzeid.materialmusic.ui.activities.base.AbsFabActivity; import com.kabouzeid.materialmusic.ui.activities.tageditor.AlbumTagEditorActivity; -import com.kabouzeid.materialmusic.util.ImageLoaderUtil; import com.kabouzeid.materialmusic.util.MusicUtil; import com.kabouzeid.materialmusic.util.Util; import com.kabouzeid.materialmusic.util.ViewUtil; @@ -129,10 +128,11 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote } } }; - private Bitmap albumCover; + @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { + if (Util.hasLollipopSDK()) postponeEnterTransition(); app = (App) getApplicationContext(); setTheme(app.getAppTheme()); setUpTranslucence(); @@ -154,8 +154,19 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote setUpObservableListViewParams(); setUpToolBar(); setUpViews(); - lollipopTransitionImageWrongSizeFix(); - animateEnterActivity(); + if (!Util.hasLollipopSDK()) animateEnterActivity(); + } + + @Override + public String getTag() { + return TAG; + } + + @Override + public void goToAlbum(int albumId) { + if (album.id != albumId) { + goToAlbum(albumId); + } } private void initViews() { @@ -191,27 +202,38 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote albumTitleView.setScaleY(0); } + @SuppressLint("NewApi") private void setUpAlbumArtAndApplyPalette() { ImageLoader.getInstance().displayImage(MusicUtil.getAlbumArtUri(album.id).toString(), albumArtImageView, new ImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { - albumArtImageView.setImageResource(R.drawable.default_album_art); } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { albumArtImageView.setImageResource(R.drawable.default_album_art); + if (Util.hasLollipopSDK()) { + startPostponedEnterTransition(); + animateEnterActivity(); + } } @Override public void onLoadingComplete(String imageUri, final View view, Bitmap loadedImage) { - albumCover = loadedImage; applyPalette(loadedImage); + if (Util.hasLollipopSDK()) { + startPostponedEnterTransition(); + animateEnterActivity(); + } } @Override public void onLoadingCancelled(String imageUri, View view) { albumArtImageView.setImageResource(R.drawable.default_album_art); + if (Util.hasLollipopSDK()) { + startPostponedEnterTransition(); + animateEnterActivity(); + } } }); } @@ -351,53 +373,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote .start(); } - @Override - public String getTag() { - return TAG; - } - - @Override - public void goToAlbum(int albumId) { - if (album.id != albumId) { - goToAlbum(albumId); - } - } - - private void lollipopTransitionImageWrongSizeFix() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - getWindow().getSharedElementEnterTransition().addListener(new Transition.TransitionListener() { - @Override - public void onTransitionStart(Transition transition) { - - } - - @Override - public void onTransitionEnd(Transition transition) { - if (albumCover == null) { - ImageLoader.getInstance().displayImage(MusicUtil.getAlbumArtUri(album.id).toString(), albumArtImageView, new ImageLoaderUtil.defaultAlbumArtOnFailed()); - } else { - albumArtImageView.setImageBitmap(albumCover); - } - } - - @Override - public void onTransitionCancel(Transition transition) { - - } - - @Override - public void onTransitionPause(Transition transition) { - - } - - @Override - public void onTransitionResume(Transition transition) { - - } - }); - } - } - @Override public void enableViews() { super.enableViews(); diff --git a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/ArtistDetailActivity.java index 6d5f75c5..141013fa 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/ArtistDetailActivity.java @@ -1,11 +1,11 @@ package com.kabouzeid.materialmusic.ui.activities; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.Fragment; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Color; -import android.os.Build; import android.os.Bundle; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; @@ -78,11 +78,10 @@ public class ArtistDetailActivity extends AbsFabActivity implements OnMusicRemot private int toolbarColor; private int tabHeight; - private Bitmap artistImage; - private Fragment currentFragment; + @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { setUpTranslucence(true, true); @@ -94,7 +93,47 @@ public class ArtistDetailActivity extends AbsFabActivity implements OnMusicRemot setUpObservableListViewParams(); setUpToolBar(); setUpViews(); - lollipopTransitionImageWrongSizeFix(); + + if (Util.hasLollipopSDK()) { + getWindow().getSharedElementEnterTransition().addListener(new Transition.TransitionListener() { + @Override + public void onTransitionStart(Transition transition) { + + } + + @Override + public void onTransitionEnd(Transition transition) { + setUpArtistImageAndApplyPalette(); + } + + @Override + public void onTransitionCancel(Transition transition) { + + } + + @Override + public void onTransitionPause(Transition transition) { + + } + + @Override + public void onTransitionResume(Transition transition) { + + } + }); + } + } + + @Override + public String getTag() { + return TAG; + } + + @Override + public void goToArtist(int artistId) { + if (artist.id != artistId) { + super.goToArtist(artistId); + } } private void initViews() { @@ -274,21 +313,17 @@ public class ArtistDetailActivity extends AbsFabActivity implements OnMusicRemot } private void setUpArtistImageAndApplyPalette() { - if (artistImage == null) { - LastFMArtistImageLoader.loadArtistImage(this, artist.name, new LastFMArtistImageLoader.ArtistImageLoaderCallback() { - @Override - public void onArtistImageLoaded(Bitmap artistImage) { - if (artistImage != null) { - ArtistDetailActivity.this.artistImage = artistImage; - artistImageView.setImageBitmap(artistImage); - applyPalette(artistImage); - } + LastFMArtistImageLoader.loadArtistImage(this, artist.name, new LastFMArtistImageLoader.ArtistImageLoaderCallback() { + @SuppressLint("NewApi") + @Override + public void onArtistImageLoaded(Bitmap artistImage) { + if (artistImage != null) { + artistImageView.setImageBitmap(artistImage); + applyPalette(artistImage); } - }); - } else { - artistImageView.setImageBitmap(artistImage); - applyPalette(artistImage); - } + //if (Util.hasLollipopSDK()) startPostponedEnterTransition(); + } + }); } private void applyPalette(Bitmap bitmap) { @@ -335,60 +370,6 @@ public class ArtistDetailActivity extends AbsFabActivity implements OnMusicRemot } } - @Override - public String getTag() { - return TAG; - } - - @Override - public void goToArtist(int artistId) { - if (artist.id != artistId) { - super.goToArtist(artistId); - } - } - - private void lollipopTransitionImageWrongSizeFix() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - getWindow().getSharedElementEnterTransition().addListener(new Transition.TransitionListener() { - @Override - public void onTransitionStart(Transition transition) { - - } - - @Override - public void onTransitionEnd(Transition transition) { - if (artistImage == null) { - LastFMArtistImageLoader.loadArtistImage(ArtistDetailActivity.this, artist.name, new LastFMArtistImageLoader.ArtistImageLoaderCallback() { - @Override - public void onArtistImageLoaded(Bitmap artistImage) { - if (artistImage != null) { - artistImageView.setImageBitmap(artistImage); - } - } - }); - } else { - artistImageView.setImageBitmap(artistImage); - } - } - - @Override - public void onTransitionCancel(Transition transition) { - - } - - @Override - public void onTransitionPause(Transition transition) { - - } - - @Override - public void onTransitionResume(Transition transition) { - - } - }); - } - } - @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_artist_detail, menu); diff --git a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/MainActivity.java index 750bf5b0..43803629 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/MainActivity.java @@ -4,7 +4,6 @@ import android.app.Activity; import android.app.Fragment; import android.content.Context; import android.content.res.Configuration; -import android.os.Build; import android.os.Bundle; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.MenuItemCompat; @@ -14,7 +13,6 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; -import android.transition.Explode; import android.util.Log; import android.util.SparseArray; import android.view.LayoutInflater; @@ -73,16 +71,12 @@ public class MainActivity extends AbsFabActivity R.id.navigation_drawer, drawerLayout ); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - getWindow().setExitTransition(new Explode()); - } } private void setUpViewPager() { viewPagerAdapter = new MainActivityViewPagerAdapter(this); viewPager.setAdapter(viewPagerAdapter); - slidingTabLayout.setDistributeEvenly(true); + //slidingTabLayout.setDistributeEvenly(true); slidingTabLayout.setSelectedIndicatorColors(Util.resolveColor(MainActivity.this, R.attr.colorAccent)); slidingTabLayout.setViewPager(viewPager); } @@ -318,7 +312,7 @@ public class MainActivity extends AbsFabActivity pages = new SparseArray<>(); context = activity; titles = new String[]{ - context.getResources().getString(R.string.all_songs), + context.getResources().getString(R.string.songs), context.getResources().getString(R.string.albums), context.getResources().getString(R.string.artists), context.getResources().getString(R.string.genres), diff --git a/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/NavigationDrawerFragment.java b/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/NavigationDrawerFragment.java index 49994561..4c8f4f0e 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/NavigationDrawerFragment.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/NavigationDrawerFragment.java @@ -140,7 +140,7 @@ public class NavigationDrawerFragment extends Fragment { private void setUpListView() { final ArrayList navigationDrawerItems = new ArrayList<>(); - navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.all_songs), R.drawable.songs)); + navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.songs), R.drawable.songs)); navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.albums), R.drawable.album)); navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.artists), R.drawable.interpret)); navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.genres), R.drawable.songs)); diff --git a/app/src/main/java/com/kabouzeid/materialmusic/util/Util.java b/app/src/main/java/com/kabouzeid/materialmusic/util/Util.java index 9be2e279..d36f8890 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/util/Util.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/util/Util.java @@ -9,6 +9,7 @@ import android.graphics.Bitmap; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; +import android.os.Build; import android.provider.MediaStore; import android.util.TypedValue; import android.view.View; @@ -191,4 +192,12 @@ public class Util { } } } + + public static boolean hasLollipopSDK() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; + } + + public static boolean hasKitKatSDK() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 08a69594..62006e97 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,7 +20,7 @@ Albums Artists Genres - All Songs + Songs Playlists Unknown Artist Unknown Album