diff --git a/app/build.gradle b/app/build.gradle index 82d970e4..37fff9a6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,4 +61,6 @@ dependencies { } compile files('../libs/jaudiotagger-2.0.4-20111207.115108-15.jar') compile 'asia.ivity.android:drag-sort-listview:1.0' + + compile 'com.github.navasmdc:MaterialDesign:1.+@aar' } 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 14a2a7d7..217d0dda 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 @@ -77,7 +77,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote private View albumArtOverlayView; private View songsBackgroundView; private TextView albumTitleView; - private FloatingActionButton fab; private Toolbar toolbar; private int toolbarHeight; private int headerOffset; @@ -109,8 +108,8 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote ViewHelper.setTranslationY(albumTitleView, titleTranslationY); // Translate FAB - int fabTranslationY = titleTranslationY + titleViewHeight - (fab.getHeight() / 2); - ViewHelper.setTranslationY(fab, fabTranslationY); + int fabTranslationY = titleTranslationY + titleViewHeight - (getFab().getHeight() / 2); + ViewHelper.setTranslationY(getFab(), fabTranslationY); if (TOOLBAR_IS_STICKY) { // Change alpha of toolbar background @@ -167,7 +166,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote albumArtOverlayView = findViewById(R.id.overlay); absSongListView = (ObservableListView) findViewById(R.id.list); albumTitleView = (TextView) findViewById(R.id.album_title); - fab = (FloatingActionButton) findViewById(R.id.fab); songsBackgroundView = findViewById(R.id.list_background); statusBar = findViewById(R.id.statusBar); } @@ -303,8 +301,8 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote } else { setUpSongsAdapter(); - fab.setScaleX(0); - fab.setScaleY(0); + getFab().setScaleX(0); + getFab().setScaleY(0); animateHeader(DEFAULT_DELAY_NO_TRANSITION); animateFab(DEFAULT_DELAY_NO_TRANSITION); } @@ -346,7 +344,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote } private void animateFab(int startDelay) { - ViewPropertyAnimator.animate(fab) + ViewPropertyAnimator.animate(getFab()) .scaleX(1) .scaleY(1) .setInterpolator(new DecelerateInterpolator(4)) @@ -402,19 +400,10 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote } } - @Override - public void onResume() { - super.onResume(); - enableViews(); - updateFabIcon(); - app.getMusicPlayerRemote().addOnMusicRemoteEventListener(this); - } - @Override public void enableViews() { super.enableViews(); absSongListView.setEnabled(true); - fab.setEnabled(true); toolbar.setEnabled(true); } @@ -422,45 +411,9 @@ public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemote public void disableViews() { super.disableViews(); absSongListView.setEnabled(false); - fab.setEnabled(false); toolbar.setEnabled(false); } - @Override - protected void onStop() { - super.onStop(); - app.getMusicPlayerRemote().removeOnMusicRemoteEventListener(this); - } - - @Override - public void onMusicRemoteEvent(MusicRemoteEvent event) { - switch (event.getAction()) { - case MusicRemoteEvent.PLAY: - fab.setImageDrawable(getResources().getDrawable(R.drawable.ic_pause_white_48dp)); - break; - case MusicRemoteEvent.PAUSE: - fab.setImageDrawable(getResources().getDrawable(R.drawable.ic_play_arrow_white_48dp)); - break; - case MusicRemoteEvent.RESUME: - fab.setImageDrawable(getResources().getDrawable(R.drawable.ic_pause_white_48dp)); - break; - case MusicRemoteEvent.STOP: - fab.setImageDrawable(getResources().getDrawable(R.drawable.ic_play_arrow_white_48dp)); - break; - case MusicRemoteEvent.QUEUE_COMPLETED: - fab.setImageResource(R.drawable.ic_play_arrow_white_48dp); - break; - } - } - - private void updateFabIcon() { - if (app.getMusicPlayerRemote().isPlaying()) { - fab.setImageResource(R.drawable.ic_pause_white_48dp); - } else { - fab.setImageResource(R.drawable.ic_play_arrow_white_48dp); - } - } - @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_album_detail, menu); 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 a873cf8f..a27ad4fb 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 @@ -231,7 +231,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements OnMusicRemot } private int getListBackgroundTranslation(int scrollY) { - return Math.max(0, -scrollY + artistImageViewHeight); + return Math.max(0, -scrollY + artistImageViewHeight - 200); } private int getTitleTranslation(int scrollY) { @@ -425,18 +425,23 @@ public class ArtistDetailActivity extends AbsFabActivity implements OnMusicRemot toolbar.setEnabled(false); } + @Override + protected void onSaveInstanceState(Bundle outState) { + + } + private static class NavigationAdapter extends FragmentPagerAdapter { private String[] titles; - private SparseArray mPages; + private static SparseArray pages; private Artist artist; private Context context; public NavigationAdapter(Activity activity, Artist artist) { super(activity.getFragmentManager()); this.artist = artist; - mPages = new SparseArray<>(); + pages = new SparseArray<>(); context = activity; titles = new String[]{ context.getResources().getString(R.string.tab_songs), @@ -447,39 +452,40 @@ public class ArtistDetailActivity extends AbsFabActivity implements OnMusicRemot @Override public Fragment getItem(int position) { - Bundle args = new Bundle(); + final Bundle args = new Bundle(); args.putInt(ARG_ARTIST_ID, artist.id); args.putString(ARG_ARTIST_NAME, artist.name); - Fragment f; - switch (position) { - case 1: - f = mPages.get(position, new ViewPagerTabArtistAlbumFragment()); - break; - case 0: - f = mPages.get(position, new ViewPagerTabArtistSongListFragment()); - break; - case 2: - f = mPages.get(position, new ViewPagerTabArtistBioFragment()); - break; - default: - f = mPages.get(position, new MainActivity.PlaceholderFragment()); - break; - } + + Fragment f = getOrCreateFragmentAt(position); f.setArguments(args); - mPages.put(position, f); + + pages.put(position, f); return f; } @Override public void destroyItem(ViewGroup container, int position, Object object) { - if (0 <= mPages.indexOfKey(position)) { - mPages.remove(position); + if (0 <= pages.indexOfKey(position)) { + pages.remove(position); } super.destroyItem(container, position, object); } public Fragment getItemAt(int position) { - return mPages.get(position, null); + return pages.get(position, null); + } + + private Fragment getOrCreateFragmentAt(int position) { + switch (position) { + case 1: + return pages.get(position, new ViewPagerTabArtistAlbumFragment()); + case 0: + return pages.get(position, new ViewPagerTabArtistSongListFragment()); + case 2: + return pages.get(position, new ViewPagerTabArtistBioFragment()); + default: + return pages.get(position, new MainActivity.PlaceholderFragment()); + } } @Override diff --git a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/base/AbsFabActivity.java b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/base/AbsFabActivity.java index c54a021b..dc8d4eaa 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/base/AbsFabActivity.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/base/AbsFabActivity.java @@ -70,9 +70,9 @@ public abstract class AbsFabActivity extends AbsBaseActivity implements OnMusicR private void updateFabState() { if (getApp().getMusicPlayerRemote().isPlaying()) { - getFab().setImageResource(R.drawable.ic_pause_white_48dp); + getFab().setImageResource(R.drawable.ic_pause_white_24dp); } else { - getFab().setImageResource(R.drawable.ic_play_arrow_white_48dp); + getFab().setImageResource(R.drawable.ic_play_arrow_white_24dp); } } @@ -149,19 +149,19 @@ public abstract class AbsFabActivity extends AbsBaseActivity implements OnMusicR public void onMusicRemoteEvent(MusicRemoteEvent event) { switch (event.getAction()) { case MusicRemoteEvent.PLAY: - getFab().setImageDrawable(getResources().getDrawable(R.drawable.ic_pause_white_48dp)); + getFab().setImageDrawable(getResources().getDrawable(R.drawable.ic_pause_white_24dp)); break; case MusicRemoteEvent.PAUSE: - getFab().setImageDrawable(getResources().getDrawable(R.drawable.ic_play_arrow_white_48dp)); + getFab().setImageDrawable(getResources().getDrawable(R.drawable.ic_play_arrow_white_24dp)); break; case MusicRemoteEvent.RESUME: - getFab().setImageDrawable(getResources().getDrawable(R.drawable.ic_pause_white_48dp)); + getFab().setImageDrawable(getResources().getDrawable(R.drawable.ic_pause_white_24dp)); break; case MusicRemoteEvent.STOP: - getFab().setImageDrawable(getResources().getDrawable(R.drawable.ic_play_arrow_white_48dp)); + getFab().setImageDrawable(getResources().getDrawable(R.drawable.ic_play_arrow_white_24dp)); break; case MusicRemoteEvent.QUEUE_COMPLETED: - getFab().setImageResource(R.drawable.ic_play_arrow_white_48dp); + getFab().setImageResource(R.drawable.ic_play_arrow_white_24dp); break; } } diff --git a/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/artistviewpager/ViewPagerTabArtistAlbumFragment.java b/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/artistviewpager/ViewPagerTabArtistAlbumFragment.java index b24f2e99..6b4c15c0 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/artistviewpager/ViewPagerTabArtistAlbumFragment.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/artistviewpager/ViewPagerTabArtistAlbumFragment.java @@ -42,7 +42,7 @@ public class ViewPagerTabArtistAlbumFragment extends AbsViewPagerTabArtistListFr openAlbumDetailsActivityIfPossible(album, albumArtView); } }); - setColumns(2); + setColumns(getResources().getInteger(R.integer.grid_columns)); return adapter; } diff --git a/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/mainactivityfragments/AlbumViewFragment.java b/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/mainactivityfragments/AlbumViewFragment.java index cfc690ac..c6fcbc0d 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/mainactivityfragments/AlbumViewFragment.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/ui/fragments/mainactivityfragments/AlbumViewFragment.java @@ -101,8 +101,8 @@ public class AlbumViewFragment extends Fragment implements KabViewsDisableAble, private void fillAbsListView(List albums) { Collections.sort(albums, new AlbumAlphabeticComparator()); - AlbumViewGridAdapter albumTileAdapter = new AlbumViewGridAdapter(getActivity(), albums); - absListView.setAdapter(albumTileAdapter); + AlbumViewGridAdapter albumViewGridAdapter = new AlbumViewGridAdapter(getActivity(), albums); + absListView.setAdapter(albumViewGridAdapter); absListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { diff --git a/app/src/main/res/drawable-xxxhdpi/ic_pause_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_pause_white_24dp.png new file mode 100755 index 00000000..dd4bfdba Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_pause_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.png new file mode 100755 index 00000000..7cc00847 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.png differ diff --git a/app/src/main/res/drawable/seekbar_progress.xml b/app/src/main/res/drawable/seekbar_progress.xml new file mode 100644 index 00000000..fa57a4a8 --- /dev/null +++ b/app/src/main/res/drawable/seekbar_progress.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/seekbar_thumb.xml b/app/src/main/res/drawable/seekbar_thumb.xml new file mode 100644 index 00000000..9d885abd --- /dev/null +++ b/app/src/main/res/drawable/seekbar_thumb.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/seekbar_thumb_normal.xml b/app/src/main/res/drawable/seekbar_thumb_normal.xml new file mode 100644 index 00000000..a249417f --- /dev/null +++ b/app/src/main/res/drawable/seekbar_thumb_normal.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/seekbar_thumb_pressed.xml b/app/src/main/res/drawable/seekbar_thumb_pressed.xml new file mode 100644 index 00000000..c12e65c1 --- /dev/null +++ b/app/src/main/res/drawable/seekbar_thumb_pressed.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b117c656..b7665b41 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -14,9 +14,6 @@ android:layout_height="match_parent" tools:context=".DrawerActivity"> - - diff --git a/app/src/main/res/layout/activity_music_controller.xml b/app/src/main/res/layout/activity_music_controller.xml index d0513e6e..4bcd0e71 100644 --- a/app/src/main/res/layout/activity_music_controller.xml +++ b/app/src/main/res/layout/activity_music_controller.xml @@ -159,13 +159,8 @@ + style="@style/MusicProgressSlider" + android:layout_above="@+id/footer"/> + 56dp + + 180dp + diff --git a/app/src/main/res/values-sw360dp-v19/dimens.xml b/app/src/main/res/values-sw360dp-v19/dimens.xml index 3442aeb7..829a32bf 100644 --- a/app/src/main/res/values-sw360dp-v19/dimens.xml +++ b/app/src/main/res/values-sw360dp-v19/dimens.xml @@ -1,7 +1,5 @@ - 25dp - 189dp 304dp \ No newline at end of file diff --git a/app/src/main/res/values-sw360dp-v20/dimens.xml b/app/src/main/res/values-sw360dp-v20/dimens.xml deleted file mode 100644 index 3442aeb7..00000000 --- a/app/src/main/res/values-sw360dp-v20/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 25dp - - 189dp - 304dp - \ No newline at end of file diff --git a/app/src/main/res/values-sw360dp-v21/dimens.xml b/app/src/main/res/values-sw360dp-v21/dimens.xml index 3442aeb7..829a32bf 100644 --- a/app/src/main/res/values-sw360dp-v21/dimens.xml +++ b/app/src/main/res/values-sw360dp-v21/dimens.xml @@ -1,7 +1,5 @@ - 25dp - 189dp 304dp \ No newline at end of file diff --git a/app/src/main/res/values-sw360dp/dimens.xml b/app/src/main/res/values-sw360dp/dimens.xml index 947af1b2..a3d1d52a 100644 --- a/app/src/main/res/values-sw360dp/dimens.xml +++ b/app/src/main/res/values-sw360dp/dimens.xml @@ -1,6 +1,4 @@ - 25dp - 304dp \ No newline at end of file diff --git a/app/src/main/res/values-v20/dimens.xml b/app/src/main/res/values-v20/dimens.xml deleted file mode 100644 index d6eaf99c..00000000 --- a/app/src/main/res/values-v20/dimens.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 25dp - - 165dp - \ No newline at end of file diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index c8871642..0729ca41 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -21,4 +21,11 @@ @drawable/notification_selector @color/notification_buttons_tint + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 9e93e57f..e40891b7 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -37,4 +37,10 @@ + + + diff --git a/app/src/main/res/values/styles_parents.xml b/app/src/main/res/values/styles_parents.xml index 588c2af0..d38d752f 100644 --- a/app/src/main/res/values/styles_parents.xml +++ b/app/src/main/res/values/styles_parents.xml @@ -49,8 +49,6 @@ + + + \ No newline at end of file