diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java index fd74974c..a7b19645 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java @@ -2,7 +2,6 @@ package com.kabouzeid.gramophone.ui.fragments.player; import android.animation.Animator; import android.os.Bundle; -import android.support.annotation.ColorInt; import android.support.v4.view.ViewPager; import android.view.GestureDetector; import android.view.LayoutInflater; @@ -90,6 +89,8 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements private void updatePlayingQueue() { viewPager.setAdapter(new AlbumCoverPagerAdapter(getFragmentManager(), MusicPlayerRemote.getPlayingQueue())); viewPager.setCurrentItem(MusicPlayerRemote.getPosition()); + // doesn't get called automatically for some reason + onPageSelected(MusicPlayerRemote.getPosition()); } @Override @@ -120,11 +121,6 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements } - private static class ColorHolder { - @ColorInt - public int color; - } - public void showHeartAnimation() { favoriteIcon.clearAnimation(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java index d6f85107..5aba61b4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java @@ -22,6 +22,7 @@ import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; import com.kabouzeid.gramophone.adapter.song.PlayingQueueAdapter; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; +import com.kabouzeid.gramophone.loader.ArtistLoader; import com.kabouzeid.gramophone.misc.DragSortRecycler; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; @@ -30,6 +31,11 @@ import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; import com.kabouzeid.gramophone.views.WidthFitSquareLayout; +import com.nostra13.universalimageloader.core.DisplayImageOptions; +import com.nostra13.universalimageloader.core.ImageLoader; +import com.nostra13.universalimageloader.core.assist.FailReason; +import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; +import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener; import com.sothree.slidinguppanel.SlidingUpPanelLayout; import org.solovyev.android.views.llm.LinearLayoutManager; @@ -67,7 +73,9 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - if (Util.isLandscape(getResources())) { + if (Util.isTablet(getResources())) { + impl = new TabletImpl(); + } else if (Util.isLandscape(getResources())) { impl = new LandscapeImpl(); } else { impl = new PortraitImpl(); @@ -399,4 +407,44 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove animatorSet.start(); } } + + @SuppressWarnings("ConstantConditions") + private static class TabletImpl extends PortraitImpl { + ImageView playerBackground; + + @Override + public void init(PlayerFragment fragment) { + super.init(fragment); + playerBackground = ((ImageView) fragment.getView().findViewById(R.id.player_background)); + playerBackground.setAlpha(0.5f); + } + + @Override + public void animateColorChange(PlayerFragment fragment, int newColor) { + fragment.slidingUpPanelLayout.setBackgroundColor(fragment.lastColor); + + AnimatorSet animatorSet = createDefaultColorChangeAnimatorSet(fragment, newColor); + animatorSet.play(ViewUtil.createBackgroundColorTransition(fragment.getView(), ColorUtil.shiftColorDown(fragment.lastColor), ColorUtil.shiftColorDown(newColor))); + animatorSet.start(); + + ImageLoader.getInstance().displayImage( + MusicUtil.getArtistImageLoaderString(ArtistLoader.getArtist(fragment.getActivity(), MusicPlayerRemote.getCurrentSong().artistId), false), + playerBackground, + new DisplayImageOptions.Builder() + .cacheInMemory(true) + .cacheOnDisk(true) + .resetViewBeforeLoading(true) + .showImageOnFail(R.drawable.default_artist_image) + //.postProcessor(new BlurProcessor.Builder(fragment.getActivity()).build()) + .displayer(new FadeInBitmapDisplayer(ViewUtil.PHONOGRAPH_ANIM_TIME, true, true, false)) + .build(), + new SimpleImageLoadingListener() { + @Override + public void onLoadingFailed(String imageUri, View view, FailReason failReason) { + FadeInBitmapDisplayer.animate(view, ViewUtil.PHONOGRAPH_ANIM_TIME); + } + } + ); + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout-sw600dp/fragment_player.xml b/app/src/main/res/layout-sw600dp/fragment_player.xml new file mode 100644 index 00000000..92ba8067 --- /dev/null +++ b/app/src/main/res/layout-sw600dp/fragment_player.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +