mirror of
https://github.com/cmclark00/RetroMusicPlayer.git
synced 2025-05-19 16:45:20 +01:00
v2.10
This commit is contained in:
parent
3d7ba2afc6
commit
08e00b89c5
341 changed files with 7612 additions and 6811 deletions
|
@ -10,6 +10,7 @@ import android.view.View;
|
|||
import android.widget.TextView;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
|
@ -28,9 +29,9 @@ import butterknife.BindView;
|
|||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.Constants;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.dialogs.ChangelogDialog;
|
||||
import code.name.monkey.retromusic.model.Contributor;
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsBaseActivity;
|
||||
import code.name.monkey.retromusic.ui.adapter.ContributorAdapter;
|
||||
|
@ -50,12 +51,12 @@ import static code.name.monkey.retromusic.Constants.TRANSLATE;
|
|||
|
||||
public class AboutActivity extends AbsBaseActivity {
|
||||
|
||||
@BindView(R.id.app_bar)
|
||||
AppBarLayout appBarLayout;
|
||||
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar toolbar;
|
||||
|
||||
@BindView(R.id.app_bar)
|
||||
View background;
|
||||
|
||||
@BindView(R.id.app_version)
|
||||
TextView appVersion;
|
||||
|
||||
|
@ -73,7 +74,6 @@ public class AboutActivity extends AbsBaseActivity {
|
|||
|
||||
setStatusbarColorAuto();
|
||||
setNavigationbarColorAuto();
|
||||
setTaskDescriptionColorAuto();
|
||||
setLightNavigationBar(true);
|
||||
|
||||
loadContributors();
|
||||
|
@ -92,16 +92,15 @@ public class AboutActivity extends AbsBaseActivity {
|
|||
}
|
||||
|
||||
private void setUpToolbar() {
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
int primaryColor = ThemeStore.primaryColor(this);
|
||||
toolbar.setBackgroundColor(primaryColor);
|
||||
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||
setTitle(null);
|
||||
appBarLayout.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
setSupportActionBar(toolbar);
|
||||
//noinspection ConstantConditions
|
||||
//getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
setTitle(null);
|
||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this));
|
||||
}
|
||||
|
||||
|
||||
private void openUrl(String url) {
|
||||
Intent i = new Intent(Intent.ACTION_VIEW);
|
||||
i.setData(Uri.parse(url));
|
||||
|
@ -166,7 +165,7 @@ public class AboutActivity extends AbsBaseActivity {
|
|||
if (position == 0) {
|
||||
openUrl(TELEGRAM_CHANGE_LOG);
|
||||
} else {
|
||||
ChangelogDialog.create().show(getSupportFragmentManager(), "change-log");
|
||||
NavigationUtil.gotoWhatNews(AboutActivity.this);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,41 +1,42 @@
|
|||
package code.name.monkey.retromusic.ui.activities;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.util.Pair;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.transition.Slide;
|
||||
import android.view.Gravity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.SubMenu;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewStub;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.request.RequestListener;
|
||||
import com.bumptech.glide.request.target.Target;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.util.Pair;
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.MaterialUtil;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
|
@ -44,7 +45,6 @@ import code.name.monkey.retromusic.dialogs.DeleteSongsDialog;
|
|||
import code.name.monkey.retromusic.glide.ArtistGlideRequest;
|
||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget;
|
||||
import code.name.monkey.retromusic.glide.SongGlideRequest;
|
||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.SortOrder.AlbumSongSortOrder;
|
||||
import code.name.monkey.retromusic.loaders.ArtistLoader;
|
||||
|
@ -85,7 +85,7 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
AppCompatTextView songTitle;
|
||||
|
||||
@BindView(R.id.action_shuffle_all)
|
||||
FloatingActionButton shuffleButton;
|
||||
MaterialButton shuffleButton;
|
||||
|
||||
@BindView(R.id.collapsing_toolbar)
|
||||
@Nullable
|
||||
|
@ -108,35 +108,49 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
TextView moreTitle;
|
||||
|
||||
@BindView(R.id.artist_image)
|
||||
@Nullable
|
||||
ImageView artistImage;
|
||||
|
||||
private AlbumDetailsPresenter albumDetailsPresenter;
|
||||
private Album album;
|
||||
|
||||
private SimpleSongAdapter adapter;
|
||||
private Album album;
|
||||
|
||||
@Override
|
||||
protected View createContentView() {
|
||||
return wrapSlidingMusicPanel(R.layout.activity_album);
|
||||
}
|
||||
|
||||
void setupWindowTransition() {
|
||||
Slide slide = new Slide(Gravity.BOTTOM);
|
||||
slide.setInterpolator(
|
||||
AnimationUtils.loadInterpolator(this, android.R.interpolator.linear_out_slow_in));
|
||||
getWindow().setEnterTransition(slide);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setDrawUnderStatusBar(true);
|
||||
setDrawUnderStatusBar();
|
||||
setupWindowTransition();
|
||||
super.onCreate(savedInstanceState);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
setBottomBarVisibility(View.GONE);
|
||||
|
||||
toggleBottomNavigationView(true);
|
||||
setLightNavigationBar(true);
|
||||
setNavigationbarColorAuto();
|
||||
|
||||
supportPostponeEnterTransition();
|
||||
setupToolbarMarginHeight();
|
||||
ActivityCompat.postponeEnterTransition(this);
|
||||
|
||||
adapter = new SimpleSongAdapter(this, new ArrayList<>(), R.layout.item_song);
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||
recyclerView.setItemAnimator(new DefaultItemAnimator());
|
||||
recyclerView.setNestedScrollingEnabled(false);
|
||||
recyclerView.setAdapter(adapter);
|
||||
|
||||
setupToolbarMarginHeight();
|
||||
|
||||
int albumId = getIntent().getIntExtra(EXTRA_ALBUM_ID, -1);
|
||||
albumDetailsPresenter = new AlbumDetailsPresenter(this, albumId);
|
||||
|
||||
}
|
||||
|
||||
private void setupToolbarMarginHeight() {
|
||||
|
@ -153,7 +167,7 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
getSupportActionBar().setTitle(null);
|
||||
|
||||
|
||||
if (toolbar != null && !PreferenceUtil.getInstance(this).getFullScreenMode()) {
|
||||
if (toolbar != null && !PreferenceUtil.getInstance().getFullScreenMode()) {
|
||||
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
|
||||
params.topMargin = RetroUtil.getStatusBarHeight(this);
|
||||
toolbar.setLayoutParams(params);
|
||||
|
@ -166,21 +180,20 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
int color;
|
||||
switch (state) {
|
||||
case COLLAPSED:
|
||||
setLightStatusbar(!ATHUtil.isWindowBackgroundDark(AlbumDetailsActivity.this));
|
||||
color = ATHUtil.resolveColor(AlbumDetailsActivity.this, R.attr.iconColor);
|
||||
setLightStatusbar(ColorUtil.isColorLight(ThemeStore.primaryColor(AlbumDetailsActivity.this)));
|
||||
color = ThemeStore.primaryColor(AlbumDetailsActivity.this);
|
||||
break;
|
||||
default:
|
||||
case EXPANDED:
|
||||
case IDLE:
|
||||
setLightStatusbar(false);
|
||||
color = ContextCompat.getColor(AlbumDetailsActivity.this, R.color.md_white_1000);
|
||||
color = Color.TRANSPARENT;
|
||||
break;
|
||||
}
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar, color, AlbumDetailsActivity.this);
|
||||
ToolbarContentTintHelper.setToolbarContentColorBasedOnToolbarColor(AlbumDetailsActivity.this, toolbar, color);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@OnClick({R.id.action_shuffle_all, R.id.artist_image})
|
||||
|
@ -193,8 +206,8 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
artistPairs);
|
||||
break;
|
||||
case R.id.action_shuffle_all:
|
||||
if (album.songs != null) {
|
||||
MusicPlayerRemote.openAndShuffleQueue(album.songs, true);
|
||||
if (getAlbum().songs != null) {
|
||||
MusicPlayerRemote.openAndShuffleQueue(getAlbum().songs, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -224,7 +237,7 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
|
||||
@Override
|
||||
public void completed() {
|
||||
supportStartPostponedEnterTransition();
|
||||
ActivityCompat.startPostponedEnterTransition(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -241,31 +254,24 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, album.songs))));
|
||||
|
||||
loadAlbumCover();
|
||||
|
||||
adapter = new SimpleSongAdapter(this, this.album.songs, R.layout.item_song);
|
||||
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||
recyclerView.setItemAnimator(new DefaultItemAnimator());
|
||||
recyclerView.setAdapter(adapter);
|
||||
recyclerView.setNestedScrollingEnabled(false);
|
||||
|
||||
loadMoreFrom(album);
|
||||
|
||||
adapter.swapDataSet(album.songs);
|
||||
}
|
||||
|
||||
private void loadMoreFrom(Album album) {
|
||||
|
||||
ArtistGlideRequest.Builder.from(Glide.with(this),
|
||||
ArtistLoader.getArtist(this, album.getArtistId()).blockingFirst())
|
||||
.forceDownload(false)
|
||||
.generatePalette(this).build()
|
||||
.dontAnimate()
|
||||
.into(new RetroMusicColoredTarget(artistImage) {
|
||||
@Override
|
||||
public void onColorReady(int color) {
|
||||
//setColors(color);
|
||||
}
|
||||
});
|
||||
if (artistImage != null) {
|
||||
ArtistGlideRequest.Builder.from(Glide.with(this),
|
||||
ArtistLoader.getArtist(this, album.getArtistId()).blockingFirst())
|
||||
.forceDownload(false)
|
||||
.generatePalette(this).build()
|
||||
.dontAnimate()
|
||||
.into(new RetroMusicColoredTarget(artistImage) {
|
||||
@Override
|
||||
public void onColorReady(int color) {
|
||||
//setColors(color);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
ArrayList<Album> albums = ArtistLoader.getArtist(this, album.getArtistId())
|
||||
.blockingFirst().albums;
|
||||
|
@ -278,11 +284,11 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
}
|
||||
moreTitle.setText(String.format("More from %s", album.getArtistName()));
|
||||
|
||||
AlbumAdapter albumAdapter = new HorizontalAlbumAdapter(this, albums,
|
||||
false, null);
|
||||
moreRecyclerView
|
||||
.setLayoutManager(new GridLayoutManager(this, 1, GridLayoutManager.HORIZONTAL, false));
|
||||
AlbumAdapter albumAdapter = new HorizontalAlbumAdapter(this, albums, false, null);
|
||||
moreRecyclerView.setLayoutManager(new GridLayoutManager(this, 1, GridLayoutManager.HORIZONTAL, false));
|
||||
moreRecyclerView.setAdapter(albumAdapter);
|
||||
|
||||
ActivityCompat.startPostponedEnterTransition(this);
|
||||
}
|
||||
|
||||
public Album getAlbum() {
|
||||
|
@ -294,22 +300,6 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
.checkIgnoreMediaStore(this)
|
||||
.generatePalette(this).build()
|
||||
.dontAnimate()
|
||||
.listener(new RequestListener<Object, BitmapPaletteWrapper>() {
|
||||
@Override
|
||||
public boolean onException(Exception e, Object model, Target<BitmapPaletteWrapper> target,
|
||||
boolean isFirstResource) {
|
||||
supportStartPostponedEnterTransition();
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onResourceReady(BitmapPaletteWrapper resource, Object model,
|
||||
Target<BitmapPaletteWrapper> target, boolean isFromMemoryCache,
|
||||
boolean isFirstResource) {
|
||||
supportStartPostponedEnterTransition();
|
||||
return false;
|
||||
}
|
||||
})
|
||||
.into(new RetroMusicColoredTarget(image) {
|
||||
@Override
|
||||
public void onColorReady(int color) {
|
||||
|
@ -320,14 +310,15 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
|
||||
private void setColors(int color) {
|
||||
int themeColor =
|
||||
PreferenceUtil.getInstance(this).getAdaptiveColor() ? color : ThemeStore.accentColor(this);
|
||||
PreferenceUtil.getInstance().getAdaptiveColor() ? color : ThemeStore.accentColor(this);
|
||||
songTitle.setTextColor(themeColor);
|
||||
moreTitle.setTextColor(themeColor);
|
||||
|
||||
TintHelper.setTintAuto(shuffleButton, themeColor, true);
|
||||
MaterialUtil.setTint(shuffleButton, true, themeColor);
|
||||
//findViewById(R.id.root).setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_album_detail, menu);
|
||||
|
@ -390,7 +381,7 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
}
|
||||
|
||||
private String getSavedSortOrder() {
|
||||
return PreferenceUtil.getInstance(this).getAlbumDetailSongSortOrder();
|
||||
return PreferenceUtil.getInstance().getAlbumDetailSongSortOrder();
|
||||
}
|
||||
|
||||
private void setUpSortOrderMenu(@NonNull SubMenu sortOrder) {
|
||||
|
@ -411,7 +402,7 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
}
|
||||
|
||||
private void setSaveSortOrder(String sortOrder) {
|
||||
PreferenceUtil.getInstance(this).setAlbumDetailSongSortOrder(sortOrder);
|
||||
PreferenceUtil.getInstance().setAlbumDetailSongSortOrder(sortOrder);
|
||||
reload();
|
||||
}
|
||||
|
||||
|
|
|
@ -2,41 +2,45 @@ package code.name.monkey.retromusic.ui.activities;
|
|||
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.text.Html;
|
||||
import android.text.Spanned;
|
||||
import android.transition.Slide;
|
||||
import android.view.Gravity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewGroup.LayoutParams;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.MaterialUtil;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
|
@ -105,7 +109,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
TextView text;
|
||||
|
||||
@BindView(R.id.action_shuffle_all)
|
||||
FloatingActionButton shuffleButton;
|
||||
MaterialButton shuffleButton;
|
||||
|
||||
@BindView(R.id.gradient_background)
|
||||
@Nullable
|
||||
|
@ -130,6 +134,15 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
private AlbumAdapter albumAdapter;
|
||||
private boolean forceDownload;
|
||||
|
||||
void setupWindowTransistion() {
|
||||
Slide slide = new Slide(Gravity.BOTTOM);
|
||||
slide.setInterpolator(
|
||||
AnimationUtils.loadInterpolator(this, android.R.interpolator.linear_out_slow_in));
|
||||
getWindow().setEnterTransition(slide);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected View createContentView() {
|
||||
return wrapSlidingMusicPanel(R.layout.activity_artist_details);
|
||||
|
@ -137,17 +150,16 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
setDrawUnderStatusBar(true);
|
||||
setDrawUnderStatusBar();
|
||||
setupWindowTransistion();
|
||||
super.onCreate(bundle);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
setBottomBarVisibility(View.GONE);
|
||||
|
||||
toggleBottomNavigationView(true);
|
||||
setNavigationbarColorAuto();
|
||||
setLightNavigationBar(true);
|
||||
|
||||
supportPostponeEnterTransition();
|
||||
|
||||
ActivityCompat.postponeEnterTransition(this);
|
||||
|
||||
lastFMRestClient = new LastFMRestClient(this);
|
||||
|
||||
|
@ -159,7 +171,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
|
||||
private void setUpViews() {
|
||||
setupRecyclerView();
|
||||
setupToolbar();
|
||||
setupToolbarMarginHeight();
|
||||
setupContainerHeight();
|
||||
}
|
||||
|
||||
|
@ -171,49 +183,47 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
}
|
||||
}
|
||||
|
||||
private void setupToolbar() {
|
||||
private void setupToolbarMarginHeight() {
|
||||
int primaryColor = ThemeStore.primaryColor(this);
|
||||
TintHelper.setTintAuto(contentContainer, primaryColor, true);
|
||||
if (collapsingToolbarLayout != null) {
|
||||
collapsingToolbarLayout.setContentScrimColor(primaryColor);
|
||||
collapsingToolbarLayout.setStatusBarScrimColor(ColorUtil.darkenColor(primaryColor));
|
||||
}
|
||||
|
||||
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
setSupportActionBar(toolbar);
|
||||
//noinspection ConstantConditions
|
||||
getSupportActionBar().setTitle(null);
|
||||
|
||||
if (toolbar != null && !PreferenceUtil.getInstance(this).getFullScreenMode()) {
|
||||
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar
|
||||
.getLayoutParams();
|
||||
|
||||
if (toolbar != null && !PreferenceUtil.getInstance().getFullScreenMode()) {
|
||||
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
|
||||
params.topMargin = RetroUtil.getStatusBarHeight(this);
|
||||
toolbar.setLayoutParams(params);
|
||||
}
|
||||
|
||||
int primaryColor = ThemeStore.primaryColor(this);
|
||||
TintHelper.setTintAuto(contentContainer, primaryColor, true);
|
||||
|
||||
if (appBarLayout != null) {
|
||||
appBarLayout.setBackgroundColor(primaryColor);
|
||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||
@Override
|
||||
public void onStateChanged(AppBarLayout appBarLayout,
|
||||
AppBarStateChangeListener.State state) {
|
||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||
int color;
|
||||
switch (state) {
|
||||
case COLLAPSED:
|
||||
setLightStatusbar(!ATHUtil.isWindowBackgroundDark(ArtistDetailActivity.this));
|
||||
color = ATHUtil.resolveColor(ArtistDetailActivity.this, R.attr.iconColor);
|
||||
setLightStatusbar(ColorUtil.isColorLight(ThemeStore.primaryColor(appBarLayout.getContext())));
|
||||
color = ThemeStore.primaryColor(appBarLayout.getContext());
|
||||
break;
|
||||
default:
|
||||
case EXPANDED:
|
||||
case IDLE:
|
||||
setLightStatusbar(false);
|
||||
color = ContextCompat.getColor(ArtistDetailActivity.this, R.color.md_white_1000);
|
||||
color = Color.TRANSPARENT;
|
||||
break;
|
||||
}
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar, color, ArtistDetailActivity.this);
|
||||
ToolbarContentTintHelper.setToolbarContentColorBasedOnToolbarColor(appBarLayout.getContext(), toolbar, color);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (collapsingToolbarLayout != null) {
|
||||
collapsingToolbarLayout.setContentScrimColor(primaryColor);
|
||||
collapsingToolbarLayout.setStatusBarScrimColor(ColorUtil.darkenColor(primaryColor));
|
||||
}
|
||||
}
|
||||
|
||||
private void setupRecyclerView() {
|
||||
|
@ -270,7 +280,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
|
||||
@Override
|
||||
public void completed() {
|
||||
supportStartPostponedEnterTransition();
|
||||
ActivityCompat.startPostponedEnterTransition(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -367,14 +377,13 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
|
||||
private void setColors(int color) {
|
||||
|
||||
int textColor =
|
||||
PreferenceUtil.getInstance(this).getAdaptiveColor() ? color : ThemeStore.accentColor(this);
|
||||
int textColor = PreferenceUtil.getInstance().getAdaptiveColor() ? color : ThemeStore.accentColor(this);
|
||||
|
||||
albumTitle.setTextColor(textColor);
|
||||
songTitle.setTextColor(textColor);
|
||||
biographyTitle.setTextColor(textColor);
|
||||
|
||||
TintHelper.setTintAuto(shuffleButton, textColor, true);
|
||||
MaterialUtil.setTint(shuffleButton, true, textColor);
|
||||
|
||||
if (background != null) {
|
||||
background.setBackgroundTintList(ColorStateList.valueOf(color));
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
package code.name.monkey.retromusic.ui.activities;
|
||||
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
@ -17,22 +10,27 @@ import android.widget.ProgressBar;
|
|||
import android.widget.TextView;
|
||||
|
||||
import com.afollestad.materialcab.MaterialCab;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.menu.GenreMenuHelper;
|
||||
import code.name.monkey.retromusic.interfaces.CabHolder;
|
||||
import code.name.monkey.retromusic.misc.AppBarStateChangeListener;
|
||||
import code.name.monkey.retromusic.model.Genre;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.mvp.contract.GenreDetailsContract;
|
||||
|
@ -83,14 +81,14 @@ public class GenreDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setDrawUnderStatusBar(true);
|
||||
setDrawUnderStatusBar();
|
||||
super.onCreate(savedInstanceState);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
setBottomBarVisibility(View.GONE);
|
||||
setStatusbarColorAuto();
|
||||
setNavigationbarColorAuto();
|
||||
setTaskDescriptionColorAuto();
|
||||
toggleBottomNavigationView(true);
|
||||
setLightNavigationBar(true);
|
||||
|
||||
|
||||
|
@ -113,29 +111,14 @@ public class GenreDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
private void setUpToolBar() {
|
||||
title.setText(genre.name);
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
|
||||
int primaryColor = ThemeStore.primaryColor(this);
|
||||
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
toolbar.setBackgroundColor(primaryColor);
|
||||
appBarLayout.setBackgroundColor(primaryColor);
|
||||
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this));
|
||||
setTitle(null);
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||
@Override
|
||||
public void onStateChanged(AppBarLayout appBarLayout, AppBarStateChangeListener.State state) {
|
||||
int color;
|
||||
switch (state) {
|
||||
default:
|
||||
case COLLAPSED:
|
||||
case EXPANDED:
|
||||
case IDLE:
|
||||
color = ATHUtil.resolveColor(GenreDetailsActivity.this, android.R.attr.textColorPrimary);
|
||||
break;
|
||||
}
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar, color, GenreDetailsActivity.this);
|
||||
}
|
||||
});
|
||||
|
||||
TintHelper.setTintAuto(shuffleButton, ThemeStore.accentColor(this), true);
|
||||
}
|
||||
|
||||
|
@ -208,30 +191,6 @@ public class GenreDetailsActivity extends AbsSlidingMusicPanelActivity implement
|
|||
songAdapter.swapDataSet(songs);
|
||||
}
|
||||
|
||||
public void showHeartAnimation() {
|
||||
shuffleButton.clearAnimation();
|
||||
|
||||
shuffleButton.setScaleX(0.9f);
|
||||
shuffleButton.setScaleY(0.9f);
|
||||
shuffleButton.setVisibility(View.VISIBLE);
|
||||
shuffleButton.setPivotX(shuffleButton.getWidth() / 2);
|
||||
shuffleButton.setPivotY(shuffleButton.getHeight() / 2);
|
||||
|
||||
shuffleButton.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new DecelerateInterpolator())
|
||||
.scaleX(1.1f)
|
||||
.scaleY(1.1f)
|
||||
.withEndAction(() -> shuffleButton.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new AccelerateInterpolator())
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.alpha(1f)
|
||||
.start())
|
||||
.start();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public MaterialCab openCab(final int menu, final MaterialCab.Callback callback) {
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.widget.TextView;
|
|||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsBaseActivity;
|
||||
|
||||
|
@ -19,7 +20,7 @@ public class LicenseActivity extends AbsBaseActivity {
|
|||
WebView mLicense;
|
||||
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar mToolbar;
|
||||
Toolbar toolbar;
|
||||
|
||||
@BindView(R.id.app_bar)
|
||||
AppBarLayout mAppbar;
|
||||
|
@ -50,11 +51,12 @@ public class LicenseActivity extends AbsBaseActivity {
|
|||
mLicense.loadUrl("file:///android_asset/index.html");
|
||||
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
mToolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
mToolbar.setNavigationOnClickListener(view -> onBackPressed());
|
||||
mToolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
toolbar.setNavigationOnClickListener(view -> onBackPressed());
|
||||
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
mAppbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
setTitle(null);
|
||||
setSupportActionBar(mToolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this));
|
||||
}
|
||||
}
|
|
@ -30,7 +30,7 @@ public class LockScreenActivity extends AbsMusicServiceActivity {
|
|||
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
|
||||
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
|
||||
|
||||
setDrawUnderStatusBar(true);
|
||||
setDrawUnderStatusBar();
|
||||
setContentView(R.layout.activity_lock_screen_old_style);
|
||||
|
||||
hideStatusBar();
|
||||
|
|
|
@ -92,11 +92,11 @@ public class LyricsActivity extends AbsMusicServiceActivity implements
|
|||
loadLrcFile();
|
||||
|
||||
actionsLayout.setOnCheckedChangeListener((group, checkedId) -> selectLyricsTye(checkedId));
|
||||
actionsLayout.check(PreferenceUtil.getInstance(this).getLastLyricsType());
|
||||
actionsLayout.check(PreferenceUtil.getInstance().getLastLyricsType());
|
||||
}
|
||||
|
||||
private void selectLyricsTye(int group) {
|
||||
PreferenceUtil.getInstance(this).setLastLyricsType(group);
|
||||
PreferenceUtil.getInstance().setLastLyricsType(group);
|
||||
RadioButton radioButton = actionsLayout.findViewById(group);
|
||||
if (radioButton != null) {
|
||||
radioButton.setBackgroundTintList(ColorStateList.valueOf(ThemeStore.accentColor(this)));
|
||||
|
@ -198,7 +198,7 @@ public class LyricsActivity extends AbsMusicServiceActivity implements
|
|||
.into(new RetroMusicColoredTarget(findViewById(R.id.image)) {
|
||||
@Override
|
||||
public void onColorReady(int color) {
|
||||
if (PreferenceUtil.getInstance(LyricsActivity.this).getAdaptiveColor()) {
|
||||
if (PreferenceUtil.getInstance( ).getAdaptiveColor()) {
|
||||
background.setBackgroundColor(color);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,6 @@ import butterknife.BindView;
|
|||
import butterknife.ButterKnife;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.RetroApplication;
|
||||
import code.name.monkey.retromusic.dialogs.ChangelogDialog;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.SearchQueryHelper;
|
||||
import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks;
|
||||
|
@ -45,12 +44,10 @@ import code.name.monkey.retromusic.service.MusicService;
|
|||
import code.name.monkey.retromusic.ui.activities.base.AbsSlidingMusicPanelActivity;
|
||||
import code.name.monkey.retromusic.ui.fragments.mainactivity.LibraryFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.mainactivity.home.BannerHomeFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.mainactivity.home.HomeFragment;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
|
||||
public class MainActivity extends AbsSlidingMusicPanelActivity implements SharedPreferences.OnSharedPreferenceChangeListener, BottomNavigationView.OnNavigationItemSelectedListener {
|
||||
|
||||
public static final int APP_INTRO_REQUEST = 2323;
|
||||
public static final int LIBRARY = 1;
|
||||
public static final int FOLDERS = 3;
|
||||
|
@ -65,15 +62,15 @@ public class MainActivity extends AbsSlidingMusicPanelActivity implements Shared
|
|||
@BindView(R.id.parent_container)
|
||||
FrameLayout drawerLayout;
|
||||
|
||||
|
||||
private boolean blockRequestPermissions;
|
||||
private CompositeDisposable disposable = new CompositeDisposable();
|
||||
|
||||
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (action != null && action.equals(Intent.ACTION_SCREEN_OFF)) {
|
||||
if (PreferenceUtil.getInstance(context).getLockScreen() && MusicPlayerRemote.isPlaying()) {
|
||||
if (PreferenceUtil.getInstance().getLockScreen() && MusicPlayerRemote.isPlaying()) {
|
||||
Intent activity = new Intent(context, LockScreenActivity.class);
|
||||
activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
activity.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
|
||||
|
@ -94,7 +91,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity implements Shared
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setDrawUnderStatusBar(true);
|
||||
setDrawUnderStatusBar();
|
||||
super.onCreate(savedInstanceState);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
|
@ -103,7 +100,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity implements Shared
|
|||
drawerLayout.setOnApplyWindowInsetsListener((view, windowInsets) -> windowInsets.replaceSystemWindowInsets(0, 0, 0, 0));
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
selectedFragment(PreferenceUtil.getInstance(this).getLastPage());
|
||||
selectedFragment(PreferenceUtil.getInstance().getLastPage());
|
||||
//setCurrentFragment(new LibraryFragment(), false, LibraryFragment.TAG);
|
||||
} else {
|
||||
restoreCurrentFragment();
|
||||
}
|
||||
|
@ -118,8 +116,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity implements Shared
|
|||
try {
|
||||
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
|
||||
int currentVersion = pInfo.versionCode;
|
||||
if (currentVersion != PreferenceUtil.getInstance(this).getLastChangelogVersion()) {
|
||||
ChangelogDialog.create().show(getSupportFragmentManager(), "CHANGE_LOG_DIALOG");
|
||||
if (currentVersion != PreferenceUtil.getInstance().getLastChangelogVersion()) {
|
||||
startActivity(new Intent(this, WhatsNewActivity.class));
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -133,11 +131,11 @@ public class MainActivity extends AbsSlidingMusicPanelActivity implements Shared
|
|||
screenOnOff.addAction(Intent.ACTION_SCREEN_OFF);
|
||||
registerReceiver(broadcastReceiver, screenOnOff);
|
||||
|
||||
PreferenceUtil.getInstance(this).registerOnSharedPreferenceChangedListener(this);
|
||||
PreferenceUtil.getInstance().registerOnSharedPreferenceChangedListener(this);
|
||||
|
||||
if (getIntent().hasExtra("expand")) {
|
||||
if (getIntent().getBooleanExtra("expand", false)) {
|
||||
expandPanel();
|
||||
//expandPanel();
|
||||
getIntent().putExtra("expand", false);
|
||||
}
|
||||
}
|
||||
|
@ -152,7 +150,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity implements Shared
|
|||
return;
|
||||
}
|
||||
unregisterReceiver(broadcastReceiver);
|
||||
PreferenceUtil.getInstance(this).unregisterOnSharedPreferenceChangedListener(this);
|
||||
PreferenceUtil.getInstance().unregisterOnSharedPreferenceChangedListener(this);
|
||||
}
|
||||
|
||||
public void setCurrentFragment(@NonNull Fragment fragment, boolean isStackAdd, String tag) {
|
||||
|
@ -327,9 +325,10 @@ public class MainActivity extends AbsSlidingMusicPanelActivity implements Shared
|
|||
.show();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
|
||||
PreferenceUtil.getInstance(this).setLastPage(menuItem.getItemId());
|
||||
PreferenceUtil.getInstance().setLastPage(menuItem.getItemId());
|
||||
selectedFragment(menuItem.getItemId());
|
||||
return true;
|
||||
}
|
||||
|
@ -343,8 +342,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity implements Shared
|
|||
setCurrentFragment(LibraryFragment.newInstance(itemId), false, LibraryFragment.TAG);
|
||||
break;
|
||||
case R.id.action_home:
|
||||
setCurrentFragment(PreferenceUtil.getInstance(this).toggleHomeBanner() ? HomeFragment.newInstance() :
|
||||
BannerHomeFragment.newInstance(), false, HomeFragment.TAG);
|
||||
setCurrentFragment(BannerHomeFragment.newInstance(), false, BannerHomeFragment.TAG);
|
||||
break;
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,162 @@
|
|||
package code.name.monkey.retromusic.ui.activities;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.transition.Slide;
|
||||
import android.view.Gravity;
|
||||
import android.view.animation.AnimationUtils;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsMusicServiceActivity;
|
||||
import code.name.monkey.retromusic.ui.fragments.NowPlayingScreen;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.adaptive.AdaptiveFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.blur.BlurPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.card.CardFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.cardblur.CardBlurFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.color.ColorFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.fit.FitFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.flat.FlatPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.full.FullPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.hmm.HmmPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.material.MaterialFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.normal.PlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.plain.PlainPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.simple.SimplePlayerFragment;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
|
||||
public class NowPayingActivity extends AbsMusicServiceActivity implements AbsPlayerFragment.Callbacks, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
private NowPlayingScreen currentNowPlayingScreen;
|
||||
private AbsPlayerFragment playerFragment;
|
||||
|
||||
void setupWindowTransition() {
|
||||
Slide slide = new Slide(Gravity.BOTTOM);
|
||||
slide.setInterpolator(
|
||||
AnimationUtils.loadInterpolator(this, android.R.interpolator.linear_out_slow_in));
|
||||
getWindow().setEnterTransition(slide);
|
||||
//getWindow().setExitTransition(slide);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setLightNavigationBar(true);
|
||||
setupWindowTransition();
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_now_playng);
|
||||
chooseFragmentForTheme();
|
||||
}
|
||||
|
||||
private boolean isOneOfTheseThemes() {
|
||||
return currentNowPlayingScreen == NowPlayingScreen.FLAT
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.PLAIN
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.SIMPLE
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.NORMAL
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.ADAPTIVE
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.TINY
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.MATERIAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPaletteColorChanged() {
|
||||
int paletteColor = playerFragment.getPaletteColor();
|
||||
if ((currentNowPlayingScreen == NowPlayingScreen.FLAT || currentNowPlayingScreen == NowPlayingScreen.NORMAL) && PreferenceUtil.getInstance().getAdaptiveColor()) {
|
||||
setNavigationbarColor(Color.TRANSPARENT);
|
||||
setLightStatusbar(ColorUtil.isColorLight(paletteColor));
|
||||
} else if (currentNowPlayingScreen == NowPlayingScreen.COLOR) {
|
||||
setLightStatusbar(ColorUtil.isColorLight(paletteColor));
|
||||
} else if (currentNowPlayingScreen == NowPlayingScreen.BLUR || currentNowPlayingScreen == NowPlayingScreen.BLUR_CARD) {
|
||||
setLightStatusbar(false);
|
||||
} else {
|
||||
setLightStatusbar(isOneOfTheseThemes() && ColorUtil.isColorLight(ThemeStore.primaryColor(this)));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
if (currentNowPlayingScreen != PreferenceUtil.getInstance().getNowPlayingScreen()) {
|
||||
postRecreate();
|
||||
}
|
||||
PreferenceUtil.getInstance().registerOnSharedPreferenceChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
PreferenceUtil.getInstance().unregisterOnSharedPreferenceChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onQueueChanged() {
|
||||
super.onQueueChanged();
|
||||
if (MusicPlayerRemote.getPlayingQueue().isEmpty()) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
private void chooseFragmentForTheme() {
|
||||
currentNowPlayingScreen = PreferenceUtil.getInstance().getNowPlayingScreen();
|
||||
|
||||
Fragment fragment; // must implement AbsPlayerFragment
|
||||
switch (currentNowPlayingScreen) {
|
||||
case MATERIAL:
|
||||
fragment = new MaterialFragment();
|
||||
break;
|
||||
case FIT:
|
||||
fragment = new FitFragment();
|
||||
break;
|
||||
case BLUR:
|
||||
fragment = new BlurPlayerFragment();
|
||||
break;
|
||||
case FLAT:
|
||||
fragment = new FlatPlayerFragment();
|
||||
break;
|
||||
case PLAIN:
|
||||
fragment = new PlainPlayerFragment();
|
||||
break;
|
||||
case FULL:
|
||||
fragment = new FullPlayerFragment();
|
||||
break;
|
||||
case COLOR:
|
||||
fragment = new ColorFragment();
|
||||
break;
|
||||
case CARD:
|
||||
fragment = new CardFragment();
|
||||
break;
|
||||
case SIMPLE:
|
||||
fragment = new SimplePlayerFragment();
|
||||
break;
|
||||
case TINY:
|
||||
fragment = new HmmPlayerFragment();
|
||||
break;
|
||||
case BLUR_CARD:
|
||||
fragment = new CardBlurFragment();
|
||||
break;
|
||||
case ADAPTIVE:
|
||||
fragment = new AdaptiveFragment();
|
||||
break;
|
||||
case NORMAL:
|
||||
default:
|
||||
fragment = new PlayerFragment();
|
||||
break;
|
||||
}
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.player_fragment_container, fragment).commit();
|
||||
getSupportFragmentManager().executePendingTransactions();
|
||||
|
||||
playerFragment = (AbsPlayerFragment) getSupportFragmentManager()
|
||||
.findFragmentById(R.id.player_fragment_container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
if (key.equals(PreferenceUtil.ALBUM_COVER_STYLE) || key.equals(PreferenceUtil.ALBUM_COVER_TRANSFORM)) {
|
||||
recreate();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,6 +12,7 @@ import butterknife.BindString;
|
|||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsMusicServiceActivity;
|
||||
|
@ -22,19 +23,19 @@ import code.name.monkey.retromusic.util.MusicUtil;
|
|||
public class PlayingQueueActivity extends AbsMusicServiceActivity {
|
||||
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar mToolbar;
|
||||
Toolbar toolbar;
|
||||
|
||||
@BindDrawable(R.drawable.ic_keyboard_backspace_black_24dp)
|
||||
Drawable mClose;
|
||||
Drawable close;
|
||||
|
||||
@BindView(R.id.player_queue_sub_header)
|
||||
TextView mPlayerQueueSubHeader;
|
||||
TextView textView;
|
||||
|
||||
@BindString(R.string.queue)
|
||||
String queue;
|
||||
|
||||
@BindView(R.id.app_bar)
|
||||
AppBarLayout mAppBarLayout;
|
||||
AppBarLayout appBarLayout;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
@ -64,13 +65,15 @@ public class PlayingQueueActivity extends AbsMusicServiceActivity {
|
|||
|
||||
private void setupToolbar() {
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
mPlayerQueueSubHeader.setText(getUpNextAndQueueTime());
|
||||
mPlayerQueueSubHeader.setTextColor(ThemeStore.accentColor(this));
|
||||
mAppBarLayout.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
mToolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
mToolbar.setNavigationIcon(mClose);
|
||||
setSupportActionBar(mToolbar);
|
||||
textView.setText(getUpNextAndQueueTime());
|
||||
textView.setTextColor(ThemeStore.accentColor(this));
|
||||
|
||||
appBarLayout.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
toolbar.setNavigationIcon(close);
|
||||
setSupportActionBar(toolbar);
|
||||
setTitle(null);
|
||||
mToolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import butterknife.ButterKnife;
|
|||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.menu.PlaylistMenuHelper;
|
||||
|
@ -80,16 +81,15 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setDrawUnderStatusBar(true);
|
||||
setDrawUnderStatusBar();
|
||||
super.onCreate(savedInstanceState);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
setBottomBarVisibility(View.GONE);
|
||||
setStatusbarColorAuto();
|
||||
setNavigationbarColorAuto();
|
||||
setTaskDescriptionColorAuto();
|
||||
setLightNavigationBar(true);
|
||||
|
||||
toggleBottomNavigationView(true);
|
||||
|
||||
playlist = getIntent().getExtras().getParcelable(EXTRA_PLAYLIST);
|
||||
|
||||
|
@ -106,7 +106,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
|
||||
shuffleButton.setScaleX(0.9f);
|
||||
shuffleButton.setScaleY(0.9f);
|
||||
shuffleButton.setVisibility(View.VISIBLE);
|
||||
shuffleButton.show();
|
||||
shuffleButton.setPivotX(shuffleButton.getWidth() / 2);
|
||||
shuffleButton.setPivotY(shuffleButton.getHeight() / 2);
|
||||
|
||||
|
@ -185,6 +185,8 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
setTitle(null);
|
||||
setSupportActionBar(toolbar);
|
||||
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
|
||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -3,10 +3,6 @@ package code.name.monkey.retromusic.ui.activities;
|
|||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
@ -15,13 +11,20 @@ import android.widget.Toast;
|
|||
|
||||
import com.anjlab.android.iab.v3.BillingProcessor;
|
||||
import com.anjlab.android.iab.v3.TransactionDetails;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.MaterialUtil;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.BuildConfig;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.RetroApplication;
|
||||
|
@ -39,10 +42,10 @@ public class ProVersionActivity extends AbsBaseActivity implements
|
|||
Toolbar toolbar;
|
||||
|
||||
@BindView(R.id.restore_button)
|
||||
View restoreButton;
|
||||
MaterialButton restoreButton;
|
||||
|
||||
@BindView(R.id.purchase_button)
|
||||
View purchaseButton;
|
||||
MaterialButton purchaseButton;
|
||||
|
||||
@BindView(R.id.app_bar)
|
||||
AppBarLayout appBar;
|
||||
|
@ -57,7 +60,7 @@ public class ProVersionActivity extends AbsBaseActivity implements
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_pro_version);
|
||||
setDrawUnderStatusBar(true);
|
||||
setDrawUnderStatusBar();
|
||||
ButterKnife.bind(this);
|
||||
|
||||
setStatusbarColorAuto();
|
||||
|
@ -73,14 +76,17 @@ public class ProVersionActivity extends AbsBaseActivity implements
|
|||
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
setSupportActionBar(toolbar);
|
||||
//noinspection ConstantConditions
|
||||
getSupportActionBar().setTitle(null);
|
||||
setTitle(null);
|
||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this));
|
||||
|
||||
restoreButton.setEnabled(false);
|
||||
purchaseButton.setEnabled(false);
|
||||
|
||||
billingProcessor = new BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSE_KEY, this);
|
||||
|
||||
MaterialUtil.setTint(restoreButton, false);
|
||||
MaterialUtil.setTint(purchaseButton, true);
|
||||
|
||||
}
|
||||
|
||||
private void restorePurchase() {
|
||||
|
|
|
@ -60,7 +60,7 @@ public class SearchActivity extends AbsMusicServiceActivity implements OnQueryTe
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setDrawUnderStatusBar(true);
|
||||
setDrawUnderStatusBar();
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_search);
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ import butterknife.BindView;
|
|||
import butterknife.ButterKnife;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager;
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsBaseActivity;
|
||||
|
@ -32,6 +33,8 @@ import code.name.monkey.retromusic.util.PreferenceUtil;
|
|||
|
||||
public class SettingsActivity extends AbsBaseActivity implements ColorChooserDialog.ColorCallback, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
private static final String TAG = "SettingsActivity";
|
||||
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar toolbar;
|
||||
|
||||
|
@ -44,6 +47,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
@BindView(R.id.detail_content_frame)
|
||||
@Nullable
|
||||
FrameLayout detailsFrame;
|
||||
|
||||
private FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
|
||||
@Override
|
||||
|
@ -80,7 +84,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
|
||||
setStatusbarColorAuto();
|
||||
setNavigationbarColorAuto();
|
||||
setTaskDescriptionColorAuto();
|
||||
|
||||
setLightNavigationBar(true);
|
||||
|
||||
setupToolbar();
|
||||
|
@ -92,17 +96,15 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
}
|
||||
|
||||
private void setupToolbar() {
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
int primaryColor = ThemeStore.primaryColor(this);
|
||||
toolbar.setBackgroundColor(primaryColor);
|
||||
appBarLayout.setBackgroundColor(primaryColor);
|
||||
setTitle(null);
|
||||
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
appBarLayout.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
setSupportActionBar(toolbar);
|
||||
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
setTitle(null);
|
||||
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this));
|
||||
}
|
||||
|
||||
|
||||
public void setupFragment(Fragment fragment, @StringRes int titleName) {
|
||||
FragmentTransaction fragmentTransaction = fragmentManager
|
||||
.beginTransaction()
|
||||
|
@ -120,7 +122,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (fragmentManager.getBackStackEntryCount() == 0) {
|
||||
|
@ -145,20 +146,18 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
appBarLayout.setElevation(v);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
PreferenceUtil.getInstance(this).unregisterOnSharedPreferenceChangedListener(this);
|
||||
PreferenceUtil.getInstance().unregisterOnSharedPreferenceChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
PreferenceUtil.getInstance(this).registerOnSharedPreferenceChangedListener(this);
|
||||
PreferenceUtil.getInstance().registerOnSharedPreferenceChangedListener(this);
|
||||
}
|
||||
|
||||
private static final String TAG = "SettingsActivity";
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
Log.i(TAG, "onSharedPreferenceChanged: ");
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package code.name.monkey.retromusic.ui.activities;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Paint;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
|
@ -18,6 +19,7 @@ import com.anjlab.android.iab.v3.BillingProcessor;
|
|||
import com.anjlab.android.iab.v3.SkuDetails;
|
||||
import com.anjlab.android.iab.v3.TransactionDetails;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
@ -39,6 +41,7 @@ import butterknife.ButterKnife;
|
|||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.BuildConfig;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsBaseActivity;
|
||||
|
@ -56,26 +59,30 @@ public class SupportDevelopmentActivity extends AbsBaseActivity implements Billi
|
|||
private static final int DONATION_PRODUCT_IDS = R.array.donation_ids;
|
||||
|
||||
@BindView(R.id.progress)
|
||||
ProgressBar mProgressBar;
|
||||
ProgressBar progressBar;
|
||||
|
||||
@BindView(R.id.progress_container)
|
||||
View mProgressContainer;
|
||||
View progressContainer;
|
||||
|
||||
@BindView(R.id.list)
|
||||
RecyclerView mListView;
|
||||
RecyclerView recyclerView;
|
||||
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar mToolbar;
|
||||
Toolbar toolbar;
|
||||
|
||||
@BindView(R.id.app_bar)
|
||||
AppBarLayout mAppBarLayout;
|
||||
AppBarLayout appBarLayout;
|
||||
|
||||
@BindView(R.id.root)
|
||||
ViewGroup mViewGroup;
|
||||
ViewGroup viewGroup;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
private BillingProcessor mBillingProcessor;
|
||||
|
||||
@BindView(R.id.donate)
|
||||
MaterialButton materialButton;
|
||||
|
||||
private BillingProcessor billingProcessor;
|
||||
private AsyncTask skuDetailsLoadAsyncTask;
|
||||
|
||||
private static List<SkuDetails> getDetails() {
|
||||
|
@ -107,7 +114,7 @@ public class SupportDevelopmentActivity extends AbsBaseActivity implements Billi
|
|||
|
||||
private void donate(int i) {
|
||||
final String[] ids = getResources().getStringArray(DONATION_PRODUCT_IDS);
|
||||
mBillingProcessor.purchase(this, ids[i]);
|
||||
billingProcessor.purchase(this, ids[i]);
|
||||
}
|
||||
|
||||
@OnClick(R.id.donate)
|
||||
|
@ -129,9 +136,8 @@ public class SupportDevelopmentActivity extends AbsBaseActivity implements Billi
|
|||
|
||||
setupToolbar();
|
||||
|
||||
mBillingProcessor
|
||||
= new BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSE_KEY, this);
|
||||
MDTintHelper.setTint(mProgressBar, ThemeStore.accentColor(this));
|
||||
billingProcessor = new BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSE_KEY, this);
|
||||
MDTintHelper.setTint(progressBar, ThemeStore.accentColor(this));
|
||||
|
||||
((TextView) findViewById(R.id.donation)).setTextColor(ThemeStore.accentColor(this));
|
||||
}
|
||||
|
@ -139,12 +145,16 @@ public class SupportDevelopmentActivity extends AbsBaseActivity implements Billi
|
|||
private void setupToolbar() {
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
int primaryColor = ThemeStore.primaryColor(this);
|
||||
mAppBarLayout.setBackgroundColor(primaryColor);
|
||||
mToolbar.setBackgroundColor(primaryColor);
|
||||
mToolbar.setNavigationOnClickListener(view -> onBackPressed());
|
||||
mToolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
setSupportActionBar(mToolbar);
|
||||
appBarLayout.setBackgroundColor(primaryColor);
|
||||
toolbar.setBackgroundColor(primaryColor);
|
||||
|
||||
toolbar.setNavigationOnClickListener(view -> onBackPressed());
|
||||
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp);
|
||||
setSupportActionBar(toolbar);
|
||||
setTitle(null);
|
||||
|
||||
materialButton.setBackgroundTintList(ColorStateList.valueOf(ThemeStore.accentColor(this)));
|
||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -179,15 +189,15 @@ public class SupportDevelopmentActivity extends AbsBaseActivity implements Billi
|
|||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (!mBillingProcessor.handleActivityResult(requestCode, resultCode, data)) {
|
||||
if (!billingProcessor.handleActivityResult(requestCode, resultCode, data)) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
if (mBillingProcessor != null) {
|
||||
mBillingProcessor.release();
|
||||
if (billingProcessor != null) {
|
||||
billingProcessor.release();
|
||||
}
|
||||
if (skuDetailsLoadAsyncTask != null) {
|
||||
skuDetailsLoadAsyncTask.cancel(true);
|
||||
|
@ -208,8 +218,8 @@ public class SupportDevelopmentActivity extends AbsBaseActivity implements Billi
|
|||
SupportDevelopmentActivity dialog = donationDialogWeakReference.get();
|
||||
if (dialog == null) return;
|
||||
|
||||
dialog.mProgressContainer.setVisibility(View.VISIBLE);
|
||||
dialog.mListView.setVisibility(View.GONE);
|
||||
dialog.progressContainer.setVisibility(View.VISIBLE);
|
||||
dialog.recyclerView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -217,7 +227,7 @@ public class SupportDevelopmentActivity extends AbsBaseActivity implements Billi
|
|||
SupportDevelopmentActivity dialog = donationDialogWeakReference.get();
|
||||
if (dialog != null) {
|
||||
final String[] ids = dialog.getResources().getStringArray(DONATION_PRODUCT_IDS);
|
||||
return dialog.mBillingProcessor.getPurchaseListingDetails(new ArrayList<>(Arrays.asList(ids)));
|
||||
return dialog.billingProcessor.getPurchaseListingDetails(new ArrayList<>(Arrays.asList(ids)));
|
||||
}
|
||||
cancel(false);
|
||||
return null;
|
||||
|
@ -230,16 +240,16 @@ public class SupportDevelopmentActivity extends AbsBaseActivity implements Billi
|
|||
if (dialog == null) return;
|
||||
|
||||
if (skuDetails == null || skuDetails.isEmpty()) {
|
||||
dialog.mProgressContainer.setVisibility(View.GONE);
|
||||
dialog.progressContainer.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
|
||||
//noinspection ConstantConditions
|
||||
dialog.mProgressContainer.setVisibility(View.GONE);
|
||||
dialog.mListView.setItemAnimator(new DefaultItemAnimator());
|
||||
dialog.mListView.setLayoutManager(new GridLayoutManager(dialog, 2));
|
||||
dialog.mListView.setAdapter(new SkuDetailsAdapter(dialog, skuDetails));
|
||||
dialog.mListView.setVisibility(View.VISIBLE);
|
||||
dialog.progressContainer.setVisibility(View.GONE);
|
||||
dialog.recyclerView.setItemAnimator(new DefaultItemAnimator());
|
||||
dialog.recyclerView.setLayoutManager(new GridLayoutManager(dialog, 2));
|
||||
dialog.recyclerView.setAdapter(new SkuDetailsAdapter(dialog, skuDetails));
|
||||
dialog.recyclerView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -300,7 +310,7 @@ public class SupportDevelopmentActivity extends AbsBaseActivity implements Billi
|
|||
viewHolder.price.setText(skuDetails.priceText);
|
||||
viewHolder.image.setImageResource(getIcon(i));
|
||||
|
||||
final boolean purchased = donationsDialog.mBillingProcessor.isPurchased(skuDetails.productId);
|
||||
final boolean purchased = donationsDialog.billingProcessor.isPurchased(skuDetails.productId);
|
||||
int titleTextColor = purchased ? ATHUtil.resolveColor(donationsDialog, android.R.attr.textColorHint) : ThemeStore.textColorPrimary(donationsDialog);
|
||||
int contentTextColor = purchased ? titleTextColor : ThemeStore.textColorSecondary(donationsDialog);
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ import butterknife.BindView;
|
|||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsBaseActivity;
|
||||
import code.name.monkey.retromusic.util.Compressor;
|
||||
|
@ -95,20 +96,20 @@ public class UserInfoActivity extends AbsBaseActivity {
|
|||
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
nameLayout.setBoxStrokeColor(ThemeStore.accentColor(this));
|
||||
name.setText(PreferenceUtil.getInstance(this).getUserName());
|
||||
name.setText(PreferenceUtil.getInstance().getUserName());
|
||||
|
||||
if (!PreferenceUtil.getInstance(this).getProfileImage().isEmpty()) {
|
||||
loadImageFromStorage(PreferenceUtil.getInstance(this).getProfileImage());
|
||||
if (!PreferenceUtil.getInstance().getProfileImage().isEmpty()) {
|
||||
loadImageFromStorage(PreferenceUtil.getInstance().getProfileImage());
|
||||
}
|
||||
if (!PreferenceUtil.getInstance(this).getBannerImage().isEmpty()) {
|
||||
loadBannerFromStorage(PreferenceUtil.getInstance(this).getBannerImage());
|
||||
if (!PreferenceUtil.getInstance().getBannerImage().isEmpty()) {
|
||||
loadBannerFromStorage(PreferenceUtil.getInstance().getBannerImage());
|
||||
}
|
||||
}
|
||||
|
||||
private void setupToolbar() {
|
||||
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
appBarLayout.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
nextButton.setBackgroundTintList(ColorStateList.valueOf(ThemeStore.accentColor(this)));
|
||||
TintHelper.setTintAuto(nextButton, ThemeStore.accentColor(this), true);
|
||||
}
|
||||
|
||||
@OnClick({R.id.next, R.id.banner_select})
|
||||
|
@ -124,7 +125,7 @@ public class UserInfoActivity extends AbsBaseActivity {
|
|||
return;
|
||||
}
|
||||
//noinspection ConstantConditions
|
||||
PreferenceUtil.getInstance(this).setUserName(nameString);
|
||||
PreferenceUtil.getInstance().setUserName(nameString);
|
||||
setResult(RESULT_OK);
|
||||
//((UserInfoActivity) getActivity()).setFragment(new ChooseThemeFragment(), true);
|
||||
finish();
|
||||
|
@ -144,7 +145,7 @@ public class UserInfoActivity extends AbsBaseActivity {
|
|||
selectBannerImage();
|
||||
break;
|
||||
case 1:
|
||||
PreferenceUtil.getInstance(this).setBannerImagePath("");
|
||||
PreferenceUtil.getInstance().setBannerImagePath("");
|
||||
break;
|
||||
}
|
||||
}).show();
|
||||
|
@ -152,7 +153,7 @@ public class UserInfoActivity extends AbsBaseActivity {
|
|||
|
||||
private void selectBannerImage() {
|
||||
//noinspection ConstantConditions
|
||||
if (PreferenceUtil.getInstance(this).getBannerImage().isEmpty()) {
|
||||
if (PreferenceUtil.getInstance().getBannerImage().isEmpty()) {
|
||||
Intent pickImageIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
|
||||
pickImageIntent.setType("image/*");
|
||||
pickImageIntent.putExtra("crop", "true");
|
||||
|
@ -165,7 +166,7 @@ public class UserInfoActivity extends AbsBaseActivity {
|
|||
startActivityForResult(Intent.createChooser(pickImageIntent,
|
||||
"Select Picture"), PICK_BANNER_REQUEST);
|
||||
} else {
|
||||
PreferenceUtil.getInstance(this).setBannerImagePath("");
|
||||
PreferenceUtil.getInstance().setBannerImagePath("");
|
||||
image.setImageResource(android.R.color.transparent);
|
||||
}
|
||||
}
|
||||
|
@ -183,7 +184,7 @@ public class UserInfoActivity extends AbsBaseActivity {
|
|||
pickNewPhoto();
|
||||
break;
|
||||
case 1:
|
||||
PreferenceUtil.getInstance(this).saveProfileImage("");
|
||||
PreferenceUtil.getInstance().saveProfileImage("");
|
||||
break;
|
||||
}
|
||||
}).show();
|
||||
|
@ -211,7 +212,7 @@ public class UserInfoActivity extends AbsBaseActivity {
|
|||
try {
|
||||
Bitmap bitmap = ImageUtil.getResizedBitmap(Media.getBitmap(getContentResolver(), uri), PROFILE_ICON_SIZE);
|
||||
String profileImagePath = saveToInternalStorage(bitmap, USER_PROFILE);
|
||||
PreferenceUtil.getInstance(this).saveProfileImage(profileImagePath);
|
||||
PreferenceUtil.getInstance().saveProfileImage(profileImagePath);
|
||||
loadImageFromStorage(profileImagePath);
|
||||
|
||||
} catch (IOException e) {
|
||||
|
@ -224,7 +225,7 @@ public class UserInfoActivity extends AbsBaseActivity {
|
|||
try {
|
||||
Bitmap bitmap = Media.getBitmap(getContentResolver(), uri);
|
||||
String profileImagePath = saveToInternalStorage(bitmap, USER_BANNER);
|
||||
PreferenceUtil.getInstance(this).setBannerImagePath(profileImagePath);
|
||||
PreferenceUtil.getInstance().setBannerImagePath(profileImagePath);
|
||||
loadBannerFromStorage(profileImagePath);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
package code.name.monkey.retromusic.ui.activities;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.afollestad.materialdialogs.internal.ThemeSingleton;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsBaseActivity;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
|
||||
public class WhatsNewActivity extends AbsBaseActivity {
|
||||
@BindView(R.id.web_view)
|
||||
WebView webView;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar toolbar;
|
||||
|
||||
@BindView(R.id.app_bar)
|
||||
AppBarLayout appBarLayout;
|
||||
|
||||
|
||||
private static void setChangelogRead(@NonNull Context context) {
|
||||
try {
|
||||
PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
|
||||
int currentVersion = pInfo.versionCode;
|
||||
PreferenceUtil.getInstance().setLastChangeLogVersion(currentVersion);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static String colorToHex(int color) {
|
||||
return Integer.toHexString(color).substring(2);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_whats_new);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
setStatusbarColorAuto();
|
||||
setNavigationbarColorAuto();
|
||||
setTaskDescriptionColorAuto();
|
||||
|
||||
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
appBarLayout.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
setSupportActionBar(toolbar);
|
||||
setTitle(null);
|
||||
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this));
|
||||
|
||||
try {
|
||||
// Load from phonograph-changelog.html in the assets folder
|
||||
StringBuilder buf = new StringBuilder();
|
||||
InputStream json = getAssets().open("retro-changelog.html");
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(json, "UTF-8"));
|
||||
String str;
|
||||
while ((str = in.readLine()) != null)
|
||||
buf.append(str);
|
||||
in.close();
|
||||
|
||||
// Inject color values for WebView body background and links
|
||||
final String backgroundColor = colorToHex(ThemeStore.primaryColor(this));
|
||||
final String contentColor = ThemeSingleton.get().darkTheme ? "#ffffff" : "#000000";
|
||||
webView.loadData(buf.toString()
|
||||
.replace("{style-placeholder}",
|
||||
String.format("body { background-color: %s; color: %s; }", backgroundColor, contentColor))
|
||||
.replace("{link-color}", colorToHex(ThemeSingleton.get().positiveColor.getDefaultColor()))
|
||||
.replace("{link-color-active}", colorToHex(ColorUtil.lightenColor(ThemeSingleton.get().positiveColor.getDefaultColor())))
|
||||
, "text/html", "UTF-8");
|
||||
} catch (Throwable e) {
|
||||
webView.loadData("<h1>Unable to load</h1><p>" + e.getLocalizedMessage() + "</p>", "text/html", "UTF-8");
|
||||
}
|
||||
setChangelogRead(this);
|
||||
}
|
||||
}
|
|
@ -9,13 +9,16 @@ import android.net.Uri;
|
|||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
|
||||
|
@ -32,7 +35,6 @@ public abstract class AbsBaseActivity extends AbsThemeActivity {
|
|||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||
|
||||
permissions = getPermissionsToRequest();
|
||||
|
@ -59,7 +61,6 @@ public abstract class AbsBaseActivity extends AbsThemeActivity {
|
|||
onHasPermissionsChanged(hasPermissions);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void onHasPermissionsChanged(boolean hasPermissions) {
|
||||
|
|
|
@ -1,22 +1,15 @@
|
|||
package code.name.monkey.retromusic.ui.activities.base;
|
||||
|
||||
import android.animation.ValueAnimator;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.animation.PathInterpolator;
|
||||
|
||||
import com.google.android.gms.cast.framework.CastSession;
|
||||
import com.google.android.material.bottomnavigation.BottomNavigationView;
|
||||
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
|
||||
import com.sothree.slidinguppanel.SlidingUpPanelLayout.PanelState;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.FloatRange;
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
|
@ -27,169 +20,69 @@ import code.name.monkey.retromusic.R;
|
|||
import code.name.monkey.retromusic.cast.CastHelper;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.ui.fragments.MiniPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.NowPlayingScreen;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.adaptive.AdaptiveFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.blur.BlurPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.card.CardFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.cardblur.CardBlurFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.color.ColorFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.flat.FlatPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.full.FullPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.hmm.HmmPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.material.MaterialFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.normal.PlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.plain.PlainPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.simple.SimplePlayerFragment;
|
||||
import code.name.monkey.retromusic.util.NavigationUtil;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import code.name.monkey.retromusic.util.ViewUtil;
|
||||
|
||||
public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivity implements SlidingUpPanelLayout.PanelSlideListener, PlayerFragment.Callbacks {
|
||||
public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivity {
|
||||
|
||||
public static final String TAG = AbsSlidingMusicPanelActivity.class.getSimpleName();
|
||||
|
||||
@BindView(R.id.sliding_layout)
|
||||
SlidingUpPanelLayout slidingUpPanelLayout;
|
||||
|
||||
@BindView(R.id.bottom_navigation)
|
||||
BottomNavigationView bottomNavigationView;
|
||||
|
||||
private int navigationbarColor;
|
||||
private int taskColor;
|
||||
private boolean lightStatusBar;
|
||||
private boolean lightNavigationBar;
|
||||
private NowPlayingScreen currentNowPlayingScreen;
|
||||
private AbsPlayerFragment playerFragment;
|
||||
private MiniPlayerFragment miniPlayerFragment;
|
||||
private ValueAnimator navigationBarColorAnimator;
|
||||
@BindView(R.id.parentPanel)
|
||||
ViewGroup parentPanel;
|
||||
|
||||
@BindView(R.id.mini_player_container)
|
||||
ViewGroup miniPlayerContainer;
|
||||
|
||||
private MiniPlayerFragment miniPlayerFragment;
|
||||
|
||||
protected AbsSlidingMusicPanelActivity() {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(createContentView());
|
||||
ButterKnife.bind(this);
|
||||
|
||||
choosFragmentForTheme();
|
||||
|
||||
//noinspection ConstantConditions
|
||||
miniPlayerFragment.getView().setOnClickListener(v -> {
|
||||
CastSession castSession = getCastSession();
|
||||
if (castSession != null) {
|
||||
NavigationUtil.gotoExpandedController(AbsSlidingMusicPanelActivity.this);
|
||||
} else {
|
||||
expandPanel();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
slidingUpPanelLayout.getViewTreeObserver()
|
||||
.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
@Override
|
||||
public void onGlobalLayout() {
|
||||
slidingUpPanelLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
|
||||
if (getPanelState() == PanelState.EXPANDED) {
|
||||
onPanelSlide(slidingUpPanelLayout, 1);
|
||||
onPanelExpanded(slidingUpPanelLayout);
|
||||
} else if (getPanelState() == PanelState.COLLAPSED) {
|
||||
onPanelCollapsed(slidingUpPanelLayout);
|
||||
} else {
|
||||
playerFragment.onHide();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
slidingUpPanelLayout.addPanelSlideListener(this);
|
||||
setLightStatusbar(true);
|
||||
setLightNavigationBar(true);
|
||||
setupBottomView();
|
||||
miniPlayerFragment = (MiniPlayerFragment) getSupportFragmentManager().findFragmentById(R.id.mini_player_fragment);
|
||||
}
|
||||
|
||||
private void choosFragmentForTheme() {
|
||||
currentNowPlayingScreen = PreferenceUtil.getInstance(this).getNowPlayingScreen();
|
||||
private void setupBottomView() {
|
||||
bottomNavigationView.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
bottomNavigationView.setSelectedItemId(PreferenceUtil.getInstance().getLastPage());
|
||||
|
||||
Fragment fragment; // must implement AbsPlayerFragment
|
||||
switch (currentNowPlayingScreen) {
|
||||
case MATERIAL:
|
||||
fragment = new MaterialFragment();
|
||||
break;
|
||||
case BLUR:
|
||||
fragment = new BlurPlayerFragment();
|
||||
break;
|
||||
case FLAT:
|
||||
fragment = new FlatPlayerFragment();
|
||||
break;
|
||||
case PLAIN:
|
||||
fragment = new PlainPlayerFragment();
|
||||
break;
|
||||
case FULL:
|
||||
fragment = new FullPlayerFragment();
|
||||
break;
|
||||
case COLOR:
|
||||
fragment = new ColorFragment();
|
||||
break;
|
||||
case CARD:
|
||||
fragment = new CardFragment();
|
||||
break;
|
||||
case SIMPLE:
|
||||
fragment = new SimplePlayerFragment();
|
||||
break;
|
||||
case TINY:
|
||||
fragment = new HmmPlayerFragment();
|
||||
break;
|
||||
case BLUR_CARD:
|
||||
fragment = new CardBlurFragment();
|
||||
break;
|
||||
case ADAPTIVE:
|
||||
fragment = new AdaptiveFragment();
|
||||
break;
|
||||
int iconColor = ATHUtil.resolveColor(this, R.attr.iconColor);
|
||||
int accentColor = ThemeStore.accentColor(this);
|
||||
NavigationViewUtil.setItemIconColors(bottomNavigationView, ColorUtil.withAlpha(iconColor, 0.5f), accentColor);
|
||||
NavigationViewUtil.setItemTextColors(bottomNavigationView, ColorUtil.withAlpha(iconColor, 0.5f), accentColor);
|
||||
|
||||
case NORMAL:
|
||||
default:
|
||||
fragment = new PlayerFragment();
|
||||
break;
|
||||
}
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.player_fragment_container, fragment)
|
||||
.commit();
|
||||
getSupportFragmentManager().executePendingTransactions();
|
||||
|
||||
playerFragment = (AbsPlayerFragment) getSupportFragmentManager()
|
||||
.findFragmentById(R.id.player_fragment_container);
|
||||
miniPlayerFragment = (MiniPlayerFragment) getSupportFragmentManager()
|
||||
.findFragmentById(R.id.mini_player_fragment);
|
||||
bottomNavigationView.setLabelVisibilityMode(PreferenceUtil.getInstance().getTabTitleMode());
|
||||
//bottomNavigationView.getMenu().removeItem(R.id.action_playlist);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
if (currentNowPlayingScreen != PreferenceUtil.getInstance(this).getNowPlayingScreen()) {
|
||||
postRecreate();
|
||||
public void setBottomBarVisibility(int gone) {
|
||||
if (bottomNavigationView != null) {
|
||||
bottomNavigationView.setVisibility(gone);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (navigationBarColorAnimator != null) {
|
||||
navigationBarColorAnimator.cancel(); // just in case
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected abstract View createContentView();
|
||||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
super.onServiceConnected();
|
||||
if (!MusicPlayerRemote.getPlayingQueue().isEmpty()) {
|
||||
slidingUpPanelLayout.getViewTreeObserver()
|
||||
.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
@Override
|
||||
public void onGlobalLayout() {
|
||||
slidingUpPanelLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
hideBottomBar(false);
|
||||
}
|
||||
});
|
||||
}// don't call hideBottomBar(true) here as it causes a bug with the SlidingUpPanelLayout
|
||||
if (!MusicPlayerRemote.getPlayingQueue().isEmpty())
|
||||
parentPanel.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
@Override
|
||||
public void onGlobalLayout() {
|
||||
parentPanel.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
hideBottomBar(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -198,146 +91,10 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
hideBottomBar(MusicPlayerRemote.getPlayingQueue().isEmpty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPanelSlide(View panel, @FloatRange(from = 0, to = 1) float slideOffset) {
|
||||
bottomNavigationView.setTranslationY(slideOffset * 400);
|
||||
setMiniPlayerAlphaProgress(slideOffset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPanelStateChanged(View panel, PanelState previousState, PanelState newState) {
|
||||
switch (newState) {
|
||||
case COLLAPSED:
|
||||
onPanelCollapsed(panel);
|
||||
break;
|
||||
case EXPANDED:
|
||||
onPanelExpanded(panel);
|
||||
break;
|
||||
case ANCHORED:
|
||||
collapsePanel(); // this fixes a bug where the panel would get stuck for some reason
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void onPanelCollapsed(View panel) {
|
||||
// restore values
|
||||
super.setLightStatusbar(lightStatusBar);
|
||||
super.setTaskDescriptionColor(taskColor);
|
||||
super.setNavigationbarColor(navigationbarColor);
|
||||
super.setLightNavigationBar(lightNavigationBar);
|
||||
|
||||
playerFragment.setMenuVisibility(false);
|
||||
playerFragment.setUserVisibleHint(false);
|
||||
playerFragment.onHide();
|
||||
}
|
||||
|
||||
public void onPanelExpanded(View panel) {
|
||||
// setting fragments values
|
||||
int playerFragmentColor = playerFragment.getPaletteColor();
|
||||
super.setTaskDescriptionColor(playerFragmentColor);
|
||||
|
||||
if (currentNowPlayingScreen == NowPlayingScreen.COLOR) {
|
||||
super.setNavigationbarColor(playerFragmentColor);
|
||||
} else {
|
||||
super.setNavigationbarColor(ThemeStore.primaryColor(this));
|
||||
}
|
||||
|
||||
setLightStatusBar();
|
||||
|
||||
playerFragment.setMenuVisibility(true);
|
||||
playerFragment.setUserVisibleHint(true);
|
||||
playerFragment.onShow();
|
||||
}
|
||||
|
||||
private void setLightStatusBar() {
|
||||
super.setLightStatusbar(PreferenceUtil.getInstance(this).getAdaptiveColor() &&
|
||||
ColorUtil.isColorLight(ThemeStore.primaryColor(this)) &&
|
||||
(currentNowPlayingScreen == NowPlayingScreen.FLAT
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.PLAIN
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.SIMPLE
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.NORMAL
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.ADAPTIVE
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.TINY
|
||||
|| currentNowPlayingScreen == NowPlayingScreen.MATERIAL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLightStatusbar(boolean enabled) {
|
||||
lightStatusBar = enabled;
|
||||
if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
super.setLightStatusbar(enabled);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLightNavigationBar(boolean enabled) {
|
||||
lightNavigationBar = enabled;
|
||||
/*if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
super.setLightNavigationBar(enabled);
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTaskDescriptionColor(@ColorInt int color) {
|
||||
taskColor = color;
|
||||
if (getPanelState() == null || getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
super.setTaskDescriptionColor(color);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNavigationbarColor(int color) {
|
||||
navigationbarColor = color;
|
||||
if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
if (navigationBarColorAnimator != null) {
|
||||
navigationBarColorAnimator.cancel();
|
||||
}
|
||||
super.setNavigationbarColor(color);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPaletteColorChanged() {
|
||||
int playerFragmentColor = playerFragment.getPaletteColor();
|
||||
|
||||
if (getPanelState() == PanelState.EXPANDED) {
|
||||
super.setTaskDescriptionColor(playerFragmentColor);
|
||||
if (currentNowPlayingScreen == NowPlayingScreen.COLOR) {
|
||||
super.setNavigationbarColor(playerFragmentColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setMiniPlayerAlphaProgress(@FloatRange(from = 0, to = 1) float progress) {
|
||||
if (miniPlayerFragment == null) {
|
||||
return;
|
||||
}
|
||||
float alpha = 1 - progress;
|
||||
miniPlayerFragment.getView().setAlpha(alpha);
|
||||
// necessary to make the views below clickable
|
||||
miniPlayerFragment.getView().setVisibility(alpha == 0 ? View.GONE : View.VISIBLE);
|
||||
|
||||
}
|
||||
|
||||
public void hideBottomBar(final boolean hide) {
|
||||
|
||||
int heightOfBar =
|
||||
getResources().getDimensionPixelSize(R.dimen.mini_player_height);
|
||||
int heightOfBarWithTabs =
|
||||
getResources().getDimensionPixelSize(R.dimen.mini_player_height_expanded);
|
||||
|
||||
if (hide) {
|
||||
slidingUpPanelLayout.setPanelHeight(0);
|
||||
collapsePanel();
|
||||
} else {
|
||||
if (!MusicPlayerRemote.getPlayingQueue().isEmpty()) {
|
||||
slidingUpPanelLayout.setPanelHeight(bottomNavigationView.getVisibility() == View.VISIBLE ?
|
||||
heightOfBarWithTabs : heightOfBar);
|
||||
}
|
||||
}
|
||||
miniPlayerContainer.setVisibility(hide ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
protected View wrapSlidingMusicPanel(@LayoutRes int resId) {
|
||||
@SuppressLint("InflateParams")
|
||||
View slidingMusicPanelLayout = getLayoutInflater().inflate(R.layout.sliding_music_panel_layout, null);
|
||||
|
@ -348,51 +105,13 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (!handleBackPress()) {
|
||||
if (handleBackPress()) {
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean handleBackPress() {
|
||||
if (slidingUpPanelLayout.getPanelHeight() != 0 && playerFragment.onBackPressed()) {
|
||||
return true;
|
||||
}
|
||||
if (getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
|
||||
collapsePanel();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void animateNavigationBarColor(int color) {
|
||||
if (navigationBarColorAnimator != null) {
|
||||
navigationBarColorAnimator.cancel();
|
||||
}
|
||||
navigationBarColorAnimator = ValueAnimator.ofArgb(getWindow().getNavigationBarColor(), color)
|
||||
.setDuration(ViewUtil.RETRO_MUSIC_ANIM_TIME);
|
||||
navigationBarColorAnimator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
|
||||
navigationBarColorAnimator.addUpdateListener(animation -> {
|
||||
int playerFragmentColorDark = ColorUtil.darkenColor((Integer) animation.getAnimatedValue());
|
||||
|
||||
//bottomNavigationView.setBackgroundColor(playerFragmentColorDark);
|
||||
miniPlayerFragment.setColor(playerFragmentColorDark);
|
||||
AbsSlidingMusicPanelActivity.super.setNavigationbarColor(playerFragmentColorDark);
|
||||
|
||||
View view = getWindow().getDecorView().getRootView();
|
||||
view.setBackgroundColor(playerFragmentColorDark);
|
||||
|
||||
if (view.findViewById(R.id.toolbar) != null) {
|
||||
view.findViewById(R.id.toolbar).setBackgroundColor(playerFragmentColorDark);
|
||||
}
|
||||
if (view.findViewById(R.id.app_bar) != null) {
|
||||
view.findViewById(R.id.app_bar).setBackgroundColor(playerFragmentColorDark);
|
||||
}
|
||||
if (view.findViewById(R.id.status_bar) != null) {
|
||||
view.findViewById(R.id.status_bar)
|
||||
.setBackgroundColor(ColorUtil.darkenColor(playerFragmentColorDark));
|
||||
}
|
||||
});
|
||||
navigationBarColorAnimator.start();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -400,31 +119,6 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
return findViewById(R.id.content_container);
|
||||
}
|
||||
|
||||
public SlidingUpPanelLayout getSlidingUpPanelLayout() {
|
||||
return slidingUpPanelLayout;
|
||||
}
|
||||
|
||||
public MiniPlayerFragment getMiniPlayerFragment() {
|
||||
return miniPlayerFragment;
|
||||
}
|
||||
|
||||
public AbsPlayerFragment getPlayerFragment() {
|
||||
return playerFragment;
|
||||
}
|
||||
|
||||
|
||||
public SlidingUpPanelLayout.PanelState getPanelState() {
|
||||
return slidingUpPanelLayout == null ? null : slidingUpPanelLayout.getPanelState();
|
||||
}
|
||||
|
||||
public void collapsePanel() {
|
||||
slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
|
||||
}
|
||||
|
||||
public void expandPanel() {
|
||||
slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hideCastMiniController() {
|
||||
super.hideCastMiniController();
|
||||
|
@ -436,16 +130,6 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
MusicPlayerRemote.setZeroVolume();
|
||||
}
|
||||
|
||||
private void setupBottomView() {
|
||||
bottomNavigationView.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
bottomNavigationView.setSelectedItemId(PreferenceUtil.getInstance(this).getLastPage());
|
||||
int iconColor = ATHUtil.resolveColor(this, R.attr.iconColor);
|
||||
int accentColor = ThemeStore.accentColor(this);
|
||||
NavigationViewUtil.setItemIconColors(bottomNavigationView, ColorUtil.withAlpha(iconColor, 0.5f), accentColor);
|
||||
NavigationViewUtil.setItemTextColors(bottomNavigationView, ColorUtil.withAlpha(iconColor, 0.5f), accentColor);
|
||||
bottomNavigationView.setLabelVisibilityMode(PreferenceUtil.getInstance(this).getTabTitleMode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
super.onPlayingMetaChanged();
|
||||
|
@ -457,17 +141,12 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
CastHelper.startCasting(castSession, MusicPlayerRemote.getCurrentSong());
|
||||
}
|
||||
|
||||
public void setBottomBarVisibility(int gone) {
|
||||
if (bottomNavigationView != null) {
|
||||
//TransitionManager.beginDelayedTransition(bottomNavigationView);
|
||||
bottomNavigationView.setVisibility(gone);
|
||||
hideBottomBar(false);
|
||||
}
|
||||
public void toggleBottomNavigationView(boolean toggle) {
|
||||
bottomNavigationView.setVisibility(toggle ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
|
||||
public BottomNavigationView getBottomNavigationView() {
|
||||
return bottomNavigationView;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -5,12 +5,12 @@ import android.graphics.drawable.Drawable;
|
|||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import code.name.monkey.appthemehelper.ATH;
|
||||
import code.name.monkey.appthemehelper.ATHActivity;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
|
@ -29,7 +29,7 @@ public abstract class AbsThemeActivity extends ATHActivity implements Runnable {
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setTheme(PreferenceUtil.getInstance(this).getGeneralTheme());
|
||||
setTheme(PreferenceUtil.getInstance().getGeneralTheme());
|
||||
hideStatusBar();
|
||||
super.onCreate(savedInstanceState);
|
||||
MaterialDialogsUtil.updateMaterialDialogsThemeSingleton(this);
|
||||
|
@ -41,7 +41,7 @@ public abstract class AbsThemeActivity extends ATHActivity implements Runnable {
|
|||
}
|
||||
|
||||
private void toggleScreenOn() {
|
||||
if (PreferenceUtil.getInstance(this).isScreenOnEnabled()) {
|
||||
if (PreferenceUtil.getInstance().isScreenOnEnabled()) {
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
} else {
|
||||
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
|
@ -61,7 +61,7 @@ public abstract class AbsThemeActivity extends ATHActivity implements Runnable {
|
|||
}
|
||||
|
||||
public void hideStatusBar() {
|
||||
hideStatusBar(PreferenceUtil.getInstance(this).getFullScreenMode());
|
||||
hideStatusBar(PreferenceUtil.getInstance().getFullScreenMode());
|
||||
}
|
||||
|
||||
private void hideStatusBar(boolean fullscreen) {
|
||||
|
@ -73,14 +73,14 @@ public abstract class AbsThemeActivity extends ATHActivity implements Runnable {
|
|||
|
||||
|
||||
private void changeBackgroundShape() {
|
||||
Drawable background = PreferenceUtil.getInstance(this).isRoundCorners() ?
|
||||
Drawable background = PreferenceUtil.getInstance().isRoundCorners() ?
|
||||
ContextCompat.getDrawable(this, R.drawable.round_window)
|
||||
: ContextCompat.getDrawable(this, R.drawable.square_window);
|
||||
background = TintHelper.createTintedDrawable(background, ThemeStore.primaryColor(this));
|
||||
getWindow().setBackgroundDrawable(background);
|
||||
}
|
||||
|
||||
protected void setDrawUnderStatusBar(boolean drawUnderStatusbar) {
|
||||
public void setDrawUnderStatusBar() {
|
||||
if (VersionUtils.hasLollipop()) {
|
||||
RetroUtil.setAllowDrawUnderStatusBar(getWindow());
|
||||
} else if (VersionUtils.hasKitKat()) {
|
||||
|
@ -88,6 +88,14 @@ public abstract class AbsThemeActivity extends ATHActivity implements Runnable {
|
|||
}
|
||||
}
|
||||
|
||||
public void setDrawUnderNavigationBar() {
|
||||
if (VersionUtils.hasLollipop()) {
|
||||
RetroUtil.setAllowDrawUnderNavigationBar(getWindow());
|
||||
} else if (VersionUtils.hasKitKat()) {
|
||||
RetroUtil.setStatusBarTranslucent(getWindow());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This will set the color of the view with the id "status_bar" on KitKat and Lollipop. On
|
||||
* Lollipop if no such view is found it will set the statusbar color using the native method.
|
||||
|
@ -104,6 +112,9 @@ public abstract class AbsThemeActivity extends ATHActivity implements Runnable {
|
|||
} else {
|
||||
statusBar.setBackgroundColor(color);
|
||||
}
|
||||
} else if (VersionUtils.hasMarshmallow()) {
|
||||
getWindow().setStatusBarColor(color);
|
||||
setLightStatusbarAuto(color);
|
||||
} else if (Build.VERSION.SDK_INT >= 21) {
|
||||
getWindow().setStatusBarColor(ColorUtil.darkenColor(color));
|
||||
setLightStatusbarAuto(color);
|
||||
|
@ -171,7 +182,7 @@ public abstract class AbsThemeActivity extends ATHActivity implements Runnable {
|
|||
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
|
||||
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
|
||||
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
|
||||
if (PreferenceUtil.getInstance(this).getFullScreenMode()) {
|
||||
if (PreferenceUtil.getInstance().getFullScreenMode()) {
|
||||
getWindow().getDecorView().setSystemUiVisibility(flags);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -345,6 +345,15 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
|
|||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected String getComposer() {
|
||||
try {
|
||||
return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.COMPOSER);
|
||||
} catch (Exception ignored) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected Bitmap getAlbumArt() {
|
||||
try {
|
||||
|
|
|
@ -39,6 +39,7 @@ import butterknife.ButterKnife;
|
|||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteTranscoder;
|
||||
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper;
|
||||
|
@ -50,6 +51,7 @@ import code.name.monkey.retromusic.util.ImageUtil;
|
|||
import code.name.monkey.retromusic.util.LastFMUtil;
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
|
||||
|
@ -92,11 +94,12 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
|
|||
private Bitmap albumArtBitmap;
|
||||
private boolean deleteAlbumArt;
|
||||
private LastFMRestClient lastFMRestClient;
|
||||
private CompositeDisposable disposable = new CompositeDisposable();
|
||||
|
||||
private void setupToolbar() {
|
||||
title.setTextColor(ThemeStore.textColorPrimary(this));
|
||||
// toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
title.setTextColor(Color.WHITE);
|
||||
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||
ToolbarContentTintHelper.setToolbarContentColorBasedOnToolbarColor(this, toolbar, Color.TRANSPARENT);
|
||||
setTitle(null);
|
||||
setSupportActionBar(toolbar);
|
||||
TintHelper.setTintAuto(content, ThemeStore.primaryColor(this), true);
|
||||
|
@ -104,7 +107,7 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setDrawUnderStatusBar(true);
|
||||
setDrawUnderStatusBar();
|
||||
super.onCreate(savedInstanceState);
|
||||
ButterKnife.bind(this);
|
||||
ButterKnife.apply(textInputLayouts, textColor, ThemeStore.accentColor((this)));
|
||||
|
@ -128,7 +131,6 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
|
|||
year.addTextChangedListener(this);
|
||||
}
|
||||
|
||||
|
||||
private void fillViewsWithFileTags() {
|
||||
albumTitle.setText(getAlbumTitle());
|
||||
albumArtist.setText(getAlbumArtistName());
|
||||
|
@ -154,11 +156,17 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
|
|||
return;
|
||||
}
|
||||
|
||||
lastFMRestClient.getApiService()
|
||||
disposable.add(lastFMRestClient.getApiService()
|
||||
.getAlbumInfo(albumTitleStr, albumArtistNameStr, null)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribeOn(Schedulers.computation())
|
||||
.subscribe(this::extractDetails);
|
||||
.subscribe(this::extractDetails));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
private void extractDetails(@NonNull LastFmAlbum lastFmAlbum) {
|
||||
|
|
|
@ -2,14 +2,13 @@ package code.name.monkey.retromusic.ui.activities.tageditor;
|
|||
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
|
||||
import org.jaudiotagger.tag.FieldKey;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -17,6 +16,8 @@ import java.util.EnumMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
|
@ -60,6 +61,9 @@ public class SongTagEditorActivity extends AbsTagEditorActivity implements TextW
|
|||
@BindView(R.id.album_artist)
|
||||
EditText albumArtist;
|
||||
|
||||
@BindView(R.id.composer)
|
||||
EditText composer;
|
||||
|
||||
private void setupToolbar() {
|
||||
appBarLayout.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
|
||||
|
@ -90,7 +94,7 @@ public class SongTagEditorActivity extends AbsTagEditorActivity implements TextW
|
|||
year.addTextChangedListener(this);
|
||||
trackNumber.addTextChangedListener(this);
|
||||
lyrics.addTextChangedListener(this);
|
||||
|
||||
composer.addTextChangedListener(this);
|
||||
}
|
||||
|
||||
private void fillViewsWithFileTags() {
|
||||
|
@ -102,6 +106,7 @@ public class SongTagEditorActivity extends AbsTagEditorActivity implements TextW
|
|||
year.setText(getSongYear());
|
||||
trackNumber.setText(getTrackNumber());
|
||||
lyrics.setText(getLyrics());
|
||||
composer.setText(getComposer());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -135,6 +140,7 @@ public class SongTagEditorActivity extends AbsTagEditorActivity implements TextW
|
|||
fieldKeyValueMap.put(FieldKey.TRACK, trackNumber.getText().toString());
|
||||
fieldKeyValueMap.put(FieldKey.LYRICS, lyrics.getText().toString());
|
||||
fieldKeyValueMap.put(FieldKey.ALBUM_ARTIST, albumArtist.getText().toString());
|
||||
fieldKeyValueMap.put(FieldKey.COMPOSER, composer.getText().toString());
|
||||
writeValuesToFiles(fieldKeyValueMap, null);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
package code.name.monkey.retromusic.ui.adapter;
|
||||
|
||||
import android.app.Activity;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -14,10 +11,14 @@ import com.bumptech.glide.Glide;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindViews;
|
||||
import butterknife.ButterKnife;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.glide.SongGlideRequest;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.ui.adapter.CollageSongAdapter.CollageSongViewHolder;
|
||||
import code.name.monkey.retromusic.ui.adapter.base.MediaEntryViewHolder;
|
||||
|
@ -37,10 +38,7 @@ public class CollageSongAdapter extends RecyclerView.Adapter<CollageSongViewHold
|
|||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull CollageSongViewHolder holder, int position) {
|
||||
|
||||
|
||||
holder.bindSongs();
|
||||
|
||||
if (dataSet.size() > 9) {
|
||||
for (int i = 0; i < dataSet.subList(0, 9).size(); i++) {
|
||||
if (holder.imageViews != null) {
|
||||
|
@ -83,7 +81,7 @@ public class CollageSongAdapter extends RecyclerView.Adapter<CollageSongViewHold
|
|||
final int startPosition = i;
|
||||
ImageView imageView = imageViews.get(i);
|
||||
imageView.setOnClickListener(view -> {
|
||||
|
||||
MusicPlayerRemote.playNext(dataSet.get(startPosition));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
package code.name.monkey.retromusic.ui.adapter;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.graphics.PorterDuff;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -11,7 +8,8 @@ import android.view.ViewGroup;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.model.Genre;
|
||||
import code.name.monkey.retromusic.ui.adapter.base.MediaEntryViewHolder;
|
||||
|
@ -36,13 +34,14 @@ public class GenreAdapter extends RecyclerView.Adapter<GenreAdapter.ViewHolder>
|
|||
return mGenres;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public GenreAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
public GenreAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
return new ViewHolder(LayoutInflater.from(mActivity).inflate(mItemLayoutRes, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(GenreAdapter.ViewHolder holder, int position) {
|
||||
public void onBindViewHolder(@NonNull GenreAdapter.ViewHolder holder, int position) {
|
||||
Genre genre = mGenres.get(position);
|
||||
if (holder.title != null) {
|
||||
holder.title.setText(genre.name);
|
||||
|
@ -52,11 +51,9 @@ public class GenreAdapter extends RecyclerView.Adapter<GenreAdapter.ViewHolder>
|
|||
mActivity.getString(R.string.songs) :
|
||||
mActivity.getString(R.string.song)));
|
||||
}
|
||||
if (holder.image != null) {
|
||||
holder.image.setImageResource(R.drawable.ic_recent_actors_white_24dp);
|
||||
}
|
||||
if (holder.shortSeparator != null) {
|
||||
holder.shortSeparator.setVisibility(View.VISIBLE);
|
||||
|
||||
if (holder.separator != null) {
|
||||
holder.separator.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -76,11 +73,8 @@ public class GenreAdapter extends RecyclerView.Adapter<GenreAdapter.ViewHolder>
|
|||
if (menu != null) {
|
||||
menu.setVisibility(View.GONE);
|
||||
}
|
||||
if (image != null) {
|
||||
int iconPadding = mActivity.getResources().getDimensionPixelSize(R.dimen.list_item_image_icon_padding);
|
||||
image.setPadding(iconPadding, iconPadding, iconPadding, iconPadding);
|
||||
image.setColorFilter(ATHUtil.resolveColor(mActivity, R.attr.iconColor), PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
assert imageContainer != null;
|
||||
imageContainer.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -205,7 +205,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
@Override
|
||||
public String getSectionName(int position) {
|
||||
@Nullable String sectionName = null;
|
||||
switch (PreferenceUtil.getInstance(activity).getAlbumSortOrder()) {
|
||||
switch (PreferenceUtil.getInstance().getAlbumSortOrder()) {
|
||||
case SortOrder.AlbumSortOrder.ALBUM_A_Z:
|
||||
case SortOrder.AlbumSortOrder.ALBUM_Z_A:
|
||||
sectionName = dataSet.get(position).getTitle();
|
||||
|
@ -235,8 +235,8 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
if (isInQuickSelectMode()) {
|
||||
toggleChecked(getAdapterPosition());
|
||||
} else {
|
||||
Pair[] albumPairs = new Pair[]{
|
||||
Pair.create(image, activity.getResources().getString(R.string.transition_album_art))};
|
||||
|
||||
Pair[] albumPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_album_art))};
|
||||
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).getId(), albumPairs);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -116,7 +116,7 @@ public class AlbumCoverPagerAdapter extends CustomFragmentStatePagerAdapter {
|
|||
|
||||
private int getLayout() {
|
||||
int layout;
|
||||
switch (PreferenceUtil.getInstance(getContext()).getAlbumCoverStyle()) {
|
||||
switch (PreferenceUtil.getInstance().getAlbumCoverStyle()) {
|
||||
default:
|
||||
case NORMAL:
|
||||
layout = R.layout.fragment_album_cover;
|
||||
|
|
|
@ -2,23 +2,20 @@ package code.name.monkey.retromusic.ui.adapter.playlist;
|
|||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.ui.adapter.base.MediaEntryViewHolder;
|
||||
import code.name.monkey.retromusic.ui.adapter.playlist.AddToPlaylist.ViewHolder;
|
||||
import code.name.monkey.retromusic.util.PlaylistsUtil;
|
||||
|
||||
/**
|
||||
* @author Hemanth S (h4h13).
|
||||
*/
|
||||
public class AddToPlaylist extends RecyclerView.Adapter<ViewHolder> {
|
||||
|
||||
private Activity activity;
|
||||
|
|
|
@ -2,11 +2,6 @@ package code.name.monkey.retromusic.ui.adapter.playlist;
|
|||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.PorterDuff;
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
|
@ -20,6 +15,11 @@ import java.util.List;
|
|||
import java.util.Locale;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
import butterknife.ButterKnife;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.retromusic.R;
|
||||
|
@ -41,9 +41,6 @@ import code.name.monkey.retromusic.util.NavigationUtil;
|
|||
import code.name.monkey.retromusic.util.RetroUtil;
|
||||
import io.reactivex.Observable;
|
||||
|
||||
/**
|
||||
* Created by BlackFootSanji on 9/19/2016.
|
||||
*/
|
||||
public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewHolder, Playlist> {
|
||||
|
||||
public static final String TAG = PlaylistAdapter.class.getSimpleName();
|
||||
|
|
|
@ -15,11 +15,9 @@ import java.util.ArrayList;
|
|||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.interfaces.CabHolder;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.util.MusicUtil;
|
||||
import code.name.monkey.retromusic.util.ViewUtil;
|
||||
|
@ -34,8 +32,8 @@ public class PlayingQueueAdapter extends SongAdapter implements DraggableItemAda
|
|||
private int current;
|
||||
|
||||
public PlayingQueueAdapter(AppCompatActivity activity, ArrayList<Song> dataSet, int current,
|
||||
@LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) {
|
||||
super(activity, dataSet, itemLayoutRes, usePalette, cabHolder);
|
||||
@LayoutRes int itemLayoutRes) {
|
||||
super(activity, dataSet, itemLayoutRes, false, null);
|
||||
this.current = current;
|
||||
}
|
||||
|
||||
|
|
|
@ -198,7 +198,7 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
|
|||
return "";
|
||||
}
|
||||
@Nullable String sectionName = null;
|
||||
switch (PreferenceUtil.getInstance(activity).getSongSortOrder()) {
|
||||
switch (PreferenceUtil.getInstance().getSongSortOrder()) {
|
||||
case SortOrder.SongSortOrder.SONG_A_Z:
|
||||
case SortOrder.SongSortOrder.SONG_Z_A:
|
||||
sectionName = dataSet.get(position).title;
|
||||
|
@ -211,6 +211,9 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
|
|||
break;
|
||||
case SortOrder.SongSortOrder.SONG_YEAR:
|
||||
return MusicUtil.getYearString(dataSet.get(position).year);
|
||||
case SortOrder.SongSortOrder.COMPOSER:
|
||||
sectionName = dataSet.get(position).composer;
|
||||
break;
|
||||
}
|
||||
|
||||
return MusicUtil.getSectionName(sectionName);
|
||||
|
|
|
@ -19,12 +19,12 @@ import android.widget.TextView;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.util.Pair;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.Unbinder;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper;
|
||||
|
@ -78,8 +78,9 @@ public class MiniPlayerFragment extends AbsMusicServiceFragment implements Music
|
|||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
//noinspection ConstantConditions
|
||||
view.setBackgroundColor(ColorUtil.darkenColor(ThemeStore.primaryColor(getContext())));
|
||||
view.setBackgroundColor(ThemeStore.primaryColor(getContext()));
|
||||
view.setOnTouchListener(new FlingPlayBackController(getActivity()));
|
||||
view.setOnClickListener(v -> NavigationUtil.gotoNowPlayingActivity(getContext(), Pair.create(v, getString(R.string.transition_mini_player))));
|
||||
setUpMiniPlayer();
|
||||
|
||||
if (RetroUtil.isTablet(getResources())) {
|
||||
|
@ -87,9 +88,9 @@ public class MiniPlayerFragment extends AbsMusicServiceFragment implements Music
|
|||
previous.setVisibility(View.VISIBLE);
|
||||
playingQueue.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
next.setVisibility(PreferenceUtil.getInstance(getContext()).isExtraMiniExtraControls() ? View.VISIBLE : View.GONE);
|
||||
playingQueue.setVisibility(PreferenceUtil.getInstance(getContext()).isExtraMiniExtraControls() ? View.GONE : View.VISIBLE);
|
||||
previous.setVisibility(PreferenceUtil.getInstance(getContext()).isExtraMiniExtraControls() ? View.VISIBLE : View.GONE);
|
||||
next.setVisibility(PreferenceUtil.getInstance().isExtraMiniExtraControls() ? View.VISIBLE : View.GONE);
|
||||
playingQueue.setVisibility(PreferenceUtil.getInstance().isExtraMiniExtraControls() ? View.GONE : View.VISIBLE);
|
||||
previous.setVisibility(PreferenceUtil.getInstance().isExtraMiniExtraControls() ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,8 @@ public enum NowPlayingScreen {
|
|||
SIMPLE(R.string.simple, R.drawable.np_simple, 8),
|
||||
BLUR_CARD(R.string.blur_card, R.drawable.np_blur_card, 9),
|
||||
ADAPTIVE(R.string.adaptive, R.drawable.np_adaptive, 10),
|
||||
MATERIAL(R.string.material, R.drawable.np_material, 11);
|
||||
MATERIAL(R.string.material, R.drawable.np_material, 11),
|
||||
FIT(R.string.fit, R.drawable.np_adaptive, 12);
|
||||
|
||||
@StringRes
|
||||
public final int titleRes;
|
||||
|
|
|
@ -56,9 +56,7 @@ public class PlayingQueueFragment extends AbsMusicServiceFragment {
|
|||
(AppCompatActivity) getActivity(),
|
||||
MusicPlayerRemote.getPlayingQueue(),
|
||||
MusicPlayerRemote.getPosition(),
|
||||
R.layout.item_queue,
|
||||
false,
|
||||
null);
|
||||
R.layout.item_queue);
|
||||
mWrappedAdapter = mRecyclerViewDragDropManager.createWrappedAdapter(mPlayingQueueAdapter);
|
||||
|
||||
mLayoutManager = new LinearLayoutManager(getContext());
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
package code.name.monkey.retromusic.ui.fragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -20,9 +18,11 @@ import butterknife.BindView;
|
|||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.Unbinder;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import code.name.monkey.retromusic.volume.AudioVolumeObserver;
|
||||
import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener;
|
||||
|
||||
|
@ -31,10 +31,13 @@ public class VolumeFragment extends Fragment implements SeekBar.OnSeekBarChangeL
|
|||
|
||||
@BindView(R.id.volume_seekbar)
|
||||
SeekBar volumeSeekbar;
|
||||
|
||||
@BindView(R.id.volume_down)
|
||||
ImageView volumeDown;
|
||||
|
||||
@BindView(R.id.container)
|
||||
ViewGroup viewGroup;
|
||||
|
||||
@BindView(R.id.volume_up)
|
||||
ImageView volumeUp;
|
||||
|
||||
|
@ -58,7 +61,7 @@ public class VolumeFragment extends Fragment implements SeekBar.OnSeekBarChangeL
|
|||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
//noinspection ConstantConditions
|
||||
setTintable(ThemeStore.textColorSecondary(getContext()));
|
||||
setTintable(ATHUtil.resolveColor(getContext(), R.attr.iconColor));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -108,8 +111,9 @@ public class VolumeFragment extends Fragment implements SeekBar.OnSeekBarChangeL
|
|||
if (audioManager != null) {
|
||||
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0);
|
||||
}
|
||||
volumeDown.setImageResource(
|
||||
i == 0 ? R.drawable.ic_volume_off_white_24dp : R.drawable.ic_volume_down_white_24dp);
|
||||
setPauseWhenZeroVolume(i < 1);
|
||||
volumeDown.setImageResource(i == 0 ? R.drawable.ic_volume_off_white_24dp : R.drawable.ic_volume_down_white_24dp);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -139,10 +143,6 @@ public class VolumeFragment extends Fragment implements SeekBar.OnSeekBarChangeL
|
|||
}
|
||||
}
|
||||
|
||||
public void setColor(int color) {
|
||||
volumeSeekbar.setProgressTintList(ColorStateList.valueOf(color));
|
||||
}
|
||||
|
||||
public void tintWhiteColor() {
|
||||
setProgressBarColor(Color.WHITE);
|
||||
}
|
||||
|
@ -160,4 +160,13 @@ public class VolumeFragment extends Fragment implements SeekBar.OnSeekBarChangeL
|
|||
public void removeThumb() {
|
||||
volumeSeekbar.setThumb(null);
|
||||
}
|
||||
|
||||
private void setPauseWhenZeroVolume(boolean pauseWhenZeroVolume) {
|
||||
if (PreferenceUtil.getInstance().pauseOnZeroVolume() && pauseWhenZeroVolume)
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
MusicPlayerRemote.pauseSong();
|
||||
} else {
|
||||
MusicPlayerRemote.resumePlaying();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.base;
|
||||
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.appbar.AppBarLayout.OnOffsetChangedListener;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.appbar.AppBarLayout.OnOffsetChangedListener;
|
||||
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.view.View;
|
|||
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.dialogs.MainOptionsBottomSheetDialogFragment;
|
||||
import code.name.monkey.retromusic.ui.activities.MainActivity;
|
||||
|
@ -46,7 +47,11 @@ public abstract class AbsMainActivityFragment extends AbsMusicServiceFragment {
|
|||
public void setStatusbarColorAuto(View view) {
|
||||
// we don't want to use statusbar color because we are doing the color darkening on our own to support KitKat
|
||||
//noinspection ConstantConditions
|
||||
setStatusbarColor(view, ColorUtil.darkenColor(ThemeStore.primaryColor(getContext())));
|
||||
if (VersionUtils.hasMarshmallow()) {
|
||||
setStatusbarColor(view, ThemeStore.primaryColor(getContext()));
|
||||
} else {
|
||||
setStatusbarColor(view, ColorUtil.darkenColor(ThemeStore.primaryColor(getContext())));
|
||||
}
|
||||
}
|
||||
|
||||
protected void showMainMenu() {
|
||||
|
|
|
@ -2,10 +2,11 @@ package code.name.monkey.retromusic.ui.fragments.base;
|
|||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import code.name.monkey.retromusic.interfaces.MusicServiceEventListener;
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsMusicServiceActivity;
|
||||
|
||||
|
@ -17,6 +18,10 @@ public class AbsMusicServiceFragment extends Fragment implements MusicServiceEve
|
|||
|
||||
private AbsMusicServiceActivity activity;
|
||||
|
||||
@Nullable
|
||||
public AbsMusicServiceActivity getPlayerActivity() {
|
||||
return activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.base;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.animation.AccelerateInterpolator;
|
||||
import android.view.animation.DecelerateInterpolator;
|
||||
|
||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper;
|
||||
|
||||
/**
|
||||
|
@ -20,4 +24,29 @@ public abstract class AbsPlayerControlsFragment extends AbsMusicServiceFragment
|
|||
protected abstract void setUpProgressSlider();
|
||||
|
||||
public abstract void setDark(int color);
|
||||
|
||||
public void showBouceAnimation(View view) {
|
||||
view.clearAnimation();
|
||||
|
||||
view.setScaleX(0.9f);
|
||||
view.setScaleY(0.9f);
|
||||
view.setVisibility(View.VISIBLE);
|
||||
view.setPivotX(view.getWidth() / 2);
|
||||
view.setPivotY(view.getHeight() / 2);
|
||||
|
||||
view.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new DecelerateInterpolator())
|
||||
.scaleX(1.1f)
|
||||
.scaleY(1.1f)
|
||||
.withEndAction(() -> view.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new AccelerateInterpolator())
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.alpha(1f)
|
||||
.start())
|
||||
.start();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ import code.name.monkey.retromusic.util.MusicUtil;
|
|||
import code.name.monkey.retromusic.util.NavigationUtil;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import code.name.monkey.retromusic.util.RetroUtil;
|
||||
import code.name.monkey.retromusic.views.FitSystemWindowsLayout;
|
||||
|
||||
public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implements Toolbar.OnMenuItemClickListener, PaletteColorHolder {
|
||||
public static final String TAG = AbsPlayerFragment.class.getSimpleName();
|
||||
|
@ -51,6 +52,14 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen
|
|||
}
|
||||
}
|
||||
|
||||
protected void addSafeArea(View view) {
|
||||
FitSystemWindowsLayout safeArea = view.findViewById(R.id.safeArea);
|
||||
if (safeArea != null) {
|
||||
if (PreferenceUtil.getInstance().getFullScreenMode()) safeArea.setFit(false);
|
||||
else safeArea.setFit(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
super.onDetach();
|
||||
|
@ -117,6 +126,9 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen
|
|||
case R.id.action_set_as_ringtone:
|
||||
MusicUtil.setRingtone(getActivity(), song.id);
|
||||
return true;
|
||||
case R.id.action_settings:
|
||||
NavigationUtil.goToSettings(getActivity());
|
||||
return true;
|
||||
case R.id.action_go_to_genre:
|
||||
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
|
||||
Uri trackUri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, song.id);
|
||||
|
@ -148,23 +160,19 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen
|
|||
@Override
|
||||
public void onServiceConnected() {
|
||||
updateIsFavorite();
|
||||
//updateLyrics();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
updateIsFavorite();
|
||||
//updateLyrics();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
|
||||
if (updateIsFavoriteTask != null && !updateIsFavoriteTask.isCancelled()) {
|
||||
updateIsFavoriteTask.cancel(true);
|
||||
}
|
||||
super.onDestroyView();
|
||||
|
||||
}
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
|
@ -209,8 +217,9 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen
|
|||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
view.setBackgroundColor(ThemeStore.primaryColor(getActivity()));
|
||||
if (PreferenceUtil.getInstance(getContext()).getFullScreenMode()) {
|
||||
view.findViewById(R.id.status_bar).setVisibility(View.GONE);
|
||||
if (PreferenceUtil.getInstance().getFullScreenMode()) {
|
||||
if (view.findViewById(R.id.status_bar) != null)
|
||||
view.findViewById(R.id.status_bar).setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
notifyLayoutResChanged(itemLayoutRes);
|
||||
if (itemLayoutRes != R.layout.item_list) {
|
||||
//noinspection ConstantConditions
|
||||
itemLayoutRes = PreferenceUtil.getInstance(getContext()).getAlbumGridStyle(getContext());
|
||||
itemLayoutRes = PreferenceUtil.getInstance().getAlbumGridStyle(getContext());
|
||||
}
|
||||
ArrayList<Album> dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet();
|
||||
return new AlbumAdapter(getLibraryFragment().getMainActivity(), dataSet, itemLayoutRes, loadUsePalette(), getLibraryFragment());
|
||||
|
@ -54,7 +54,7 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
@Override
|
||||
public boolean loadUsePalette() {
|
||||
//noinspection ConstantConditions
|
||||
return PreferenceUtil.getInstance(getActivity()).albumColoredFooters();
|
||||
return PreferenceUtil.getInstance().albumColoredFooters();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -76,43 +76,43 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
@Override
|
||||
protected String loadSortOrder() {
|
||||
//noinspection ConstantConditions
|
||||
return PreferenceUtil.getInstance(getActivity()).getAlbumSortOrder();
|
||||
return PreferenceUtil.getInstance().getAlbumSortOrder();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveSortOrder(String sortOrder) {
|
||||
//noinspection ConstantConditions
|
||||
PreferenceUtil.getInstance(getActivity()).setAlbumSortOrder(sortOrder);
|
||||
PreferenceUtil.getInstance().setAlbumSortOrder(sortOrder);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int loadGridSize() {
|
||||
//noinspection ConstantConditions
|
||||
return PreferenceUtil.getInstance(getActivity()).getAlbumGridSize(getActivity());
|
||||
return PreferenceUtil.getInstance().getAlbumGridSize(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveGridSize(int gridSize) {
|
||||
//noinspection ConstantConditions
|
||||
PreferenceUtil.getInstance(getActivity()).setAlbumGridSize(gridSize);
|
||||
PreferenceUtil.getInstance().setAlbumGridSize(gridSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int loadGridSizeLand() {
|
||||
//noinspection ConstantConditions
|
||||
return PreferenceUtil.getInstance(getActivity()).getAlbumGridSizeLand(getActivity());
|
||||
return PreferenceUtil.getInstance().getAlbumGridSizeLand(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveGridSizeLand(int gridSize) {
|
||||
//noinspection ConstantConditions
|
||||
PreferenceUtil.getInstance(getActivity()).setAlbumGridSizeLand(gridSize);
|
||||
PreferenceUtil.getInstance().setAlbumGridSizeLand(gridSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveUsePalette(boolean usePalette) {
|
||||
//noinspection ConstantConditions
|
||||
PreferenceUtil.getInstance(getActivity()).setAlbumColoredFooters(usePalette);
|
||||
PreferenceUtil.getInstance().setAlbumColoredFooters(usePalette);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -132,7 +132,7 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
if (menuVisible) {
|
||||
//noinspection ConstantConditions
|
||||
getLibraryFragment().setTitle(
|
||||
PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library
|
||||
PreferenceUtil.getInstance().tabTitles() ? R.string.library
|
||||
: R.string.albums);
|
||||
}
|
||||
}
|
||||
|
@ -142,7 +142,7 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
super.onResume();
|
||||
//noinspection ConstantConditions
|
||||
getLibraryFragment().setTitle(
|
||||
PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library : R.string.albums);
|
||||
PreferenceUtil.getInstance().tabTitles() ? R.string.library : R.string.albums);
|
||||
if (getAdapter().getDataSet().isEmpty()) {
|
||||
presenter.subscribe();
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class ArtistsFragment extends
|
|||
int itemLayoutRes = getItemLayoutRes();
|
||||
notifyLayoutResChanged(itemLayoutRes);
|
||||
if (itemLayoutRes != R.layout.item_list) {
|
||||
itemLayoutRes = PreferenceUtil.getInstance(getContext()).getArtistGridStyle(getContext());
|
||||
itemLayoutRes = PreferenceUtil.getInstance().getArtistGridStyle(getContext());
|
||||
}
|
||||
ArrayList<Artist> dataSet =
|
||||
getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet();
|
||||
|
@ -69,32 +69,32 @@ public class ArtistsFragment extends
|
|||
|
||||
@Override
|
||||
protected int loadGridSize() {
|
||||
return PreferenceUtil.getInstance(getActivity()).getArtistGridSize(getActivity());
|
||||
return PreferenceUtil.getInstance().getArtistGridSize(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveGridSize(int gridSize) {
|
||||
PreferenceUtil.getInstance(getActivity()).setArtistGridSize(gridSize);
|
||||
PreferenceUtil.getInstance().setArtistGridSize(gridSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int loadGridSizeLand() {
|
||||
return PreferenceUtil.getInstance(getActivity()).getArtistGridSizeLand(getActivity());
|
||||
return PreferenceUtil.getInstance().getArtistGridSizeLand(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveGridSizeLand(int gridSize) {
|
||||
PreferenceUtil.getInstance(getActivity()).setArtistGridSizeLand(gridSize);
|
||||
PreferenceUtil.getInstance().setArtistGridSizeLand(gridSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveUsePalette(boolean usePalette) {
|
||||
PreferenceUtil.getInstance(getActivity()).setArtistColoredFooters(usePalette);
|
||||
PreferenceUtil.getInstance().setArtistColoredFooters(usePalette);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean loadUsePalette() {
|
||||
return PreferenceUtil.getInstance(getActivity()).artistColoredFooters();
|
||||
return PreferenceUtil.getInstance().artistColoredFooters();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -111,12 +111,12 @@ public class ArtistsFragment extends
|
|||
|
||||
@Override
|
||||
protected String loadSortOrder() {
|
||||
return PreferenceUtil.getInstance(getActivity()).getArtistSortOrder();
|
||||
return PreferenceUtil.getInstance().getArtistSortOrder();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveSortOrder(String sortOrder) {
|
||||
PreferenceUtil.getInstance(getActivity()).setArtistSortOrder(sortOrder);
|
||||
PreferenceUtil.getInstance().setArtistSortOrder(sortOrder);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -130,7 +130,7 @@ public class ArtistsFragment extends
|
|||
super.setMenuVisibility(menuVisible);
|
||||
if (menuVisible) {
|
||||
getLibraryFragment().setTitle(
|
||||
PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library
|
||||
PreferenceUtil.getInstance().tabTitles() ? R.string.library
|
||||
: R.string.artists);
|
||||
}
|
||||
}
|
||||
|
@ -139,7 +139,7 @@ public class ArtistsFragment extends
|
|||
public void onResume() {
|
||||
super.onResume();
|
||||
getLibraryFragment().setTitle(
|
||||
PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library : R.string.artists);
|
||||
PreferenceUtil.getInstance().tabTitles() ? R.string.library : R.string.artists);
|
||||
if (getAdapter().getDataSet().isEmpty()) {
|
||||
presenter.subscribe();
|
||||
}
|
||||
|
|
|
@ -41,14 +41,14 @@ public class GenreFragment extends
|
|||
public void setMenuVisibility(boolean menuVisible) {
|
||||
super.setMenuVisibility(menuVisible);
|
||||
if (menuVisible) {
|
||||
getLibraryFragment().setTitle(PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library : R.string.genres);
|
||||
getLibraryFragment().setTitle(PreferenceUtil.getInstance().tabTitles() ? R.string.library : R.string.genres);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
getLibraryFragment().setTitle(PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library : R.string.genres);
|
||||
getLibraryFragment().setTitle(PreferenceUtil.getInstance().tabTitles() ? R.string.library : R.string.genres);
|
||||
if (getAdapter().getDataSet().isEmpty()) {
|
||||
mPresenter.subscribe();
|
||||
}
|
||||
|
|
|
@ -62,7 +62,6 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
@BindView(R.id.fragment_container)
|
||||
View contentContainer;
|
||||
|
||||
|
||||
private Unbinder unBinder;
|
||||
private MaterialCab cab;
|
||||
private FragmentManager fragmentManager;
|
||||
|
@ -226,10 +225,20 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
ToolbarContentTintHelper.handleOnCreateOptionsMenu(getActivity(), toolbar, menu,
|
||||
ATHToolbarActivity.getToolbarBackgroundColor(toolbar));
|
||||
ToolbarContentTintHelper.handleOnCreateOptionsMenu(getActivity(), toolbar, menu, ATHToolbarActivity.getToolbarBackgroundColor(toolbar));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrepareOptionsMenu(Menu menu) {
|
||||
super.onPrepareOptionsMenu(menu);
|
||||
Activity activity = getActivity();
|
||||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(activity, toolbar);
|
||||
}
|
||||
|
||||
|
||||
private void setUpSortOrderMenu(
|
||||
@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment,
|
||||
@NonNull SubMenu sortOrderMenu) {
|
||||
|
@ -263,6 +272,8 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
.setChecked(currentSortOrder.equals(SortOrder.SongSortOrder.SONG_YEAR));
|
||||
sortOrderMenu.add(0, R.id.action_song_sort_order_date, 4, R.string.sort_order_date)
|
||||
.setChecked(currentSortOrder.equals(SortOrder.SongSortOrder.SONG_DATE));
|
||||
sortOrderMenu.add(0, R.id.action_song_sort_composer, 4, R.string.composer)
|
||||
.setChecked(currentSortOrder.equals(SortOrder.SongSortOrder.COMPOSER));
|
||||
}
|
||||
|
||||
sortOrderMenu.setGroupCheckable(0, true, true);
|
||||
|
@ -316,6 +327,9 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
case R.id.action_song_sort_order_date:
|
||||
sortOrder = SortOrder.SongSortOrder.SONG_DATE;
|
||||
break;
|
||||
case R.id.action_song_sort_composer:
|
||||
sortOrder = SortOrder.SongSortOrder.COMPOSER;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -328,15 +342,6 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrepareOptionsMenu(Menu menu) {
|
||||
super.onPrepareOptionsMenu(menu);
|
||||
Activity activity = getActivity();
|
||||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(activity, toolbar);
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@Override
|
||||
|
@ -469,4 +474,6 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -54,14 +54,14 @@ public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment<Playl
|
|||
public void setMenuVisibility(boolean menuVisible) {
|
||||
super.setMenuVisibility(menuVisible);
|
||||
if (menuVisible) {
|
||||
getLibraryFragment().setTitle(PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library : R.string.playlists);
|
||||
getLibraryFragment().setTitle(PreferenceUtil.getInstance().tabTitles() ? R.string.library : R.string.playlists);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
getLibraryFragment().setTitle(PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library : R.string.playlists);
|
||||
getLibraryFragment().setTitle(PreferenceUtil.getInstance().tabTitles() ? R.string.library : R.string.playlists);
|
||||
if (getAdapter().getDataSet().isEmpty()) {
|
||||
presenter.subscribe();
|
||||
}
|
||||
|
|
|
@ -75,32 +75,32 @@ public class SongsFragment extends
|
|||
|
||||
@Override
|
||||
protected int loadGridSize() {
|
||||
return PreferenceUtil.getInstance(getActivity()).getSongGridSize(getActivity());
|
||||
return PreferenceUtil.getInstance().getSongGridSize(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveGridSize(int gridSize) {
|
||||
PreferenceUtil.getInstance(getActivity()).setSongGridSize(gridSize);
|
||||
PreferenceUtil.getInstance().setSongGridSize(gridSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int loadGridSizeLand() {
|
||||
return PreferenceUtil.getInstance(getActivity()).getSongGridSizeLand(getActivity());
|
||||
return PreferenceUtil.getInstance().getSongGridSizeLand(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveGridSizeLand(int gridSize) {
|
||||
PreferenceUtil.getInstance(getActivity()).setSongGridSizeLand(gridSize);
|
||||
PreferenceUtil.getInstance().setSongGridSizeLand(gridSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveUsePalette(boolean usePalette) {
|
||||
PreferenceUtil.getInstance(getActivity()).setSongColoredFooters(usePalette);
|
||||
PreferenceUtil.getInstance().setSongColoredFooters(usePalette);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean loadUsePalette() {
|
||||
return PreferenceUtil.getInstance(getActivity()).songColoredFooters();
|
||||
return PreferenceUtil.getInstance().songColoredFooters();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -118,7 +118,7 @@ public class SongsFragment extends
|
|||
public void onResume() {
|
||||
super.onResume();
|
||||
getLibraryFragment().setTitle(
|
||||
PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library : R.string.songs);
|
||||
PreferenceUtil.getInstance().tabTitles() ? R.string.library : R.string.songs);
|
||||
if (getAdapter().getDataSet().isEmpty()) {
|
||||
presenter.subscribe();
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ public class SongsFragment extends
|
|||
super.setMenuVisibility(menuVisible);
|
||||
if (menuVisible) {
|
||||
getLibraryFragment().setTitle(
|
||||
PreferenceUtil.getInstance(getContext()).tabTitles() ? R.string.library
|
||||
PreferenceUtil.getInstance().tabTitles() ? R.string.library
|
||||
: R.string.songs);
|
||||
}
|
||||
}
|
||||
|
@ -162,12 +162,12 @@ public class SongsFragment extends
|
|||
|
||||
@Override
|
||||
protected String loadSortOrder() {
|
||||
return PreferenceUtil.getInstance(getActivity()).getSongSortOrder();
|
||||
return PreferenceUtil.getInstance().getSongSortOrder();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveSortOrder(String sortOrder) {
|
||||
PreferenceUtil.getInstance(getActivity()).setSongSortOrder(sortOrder);
|
||||
PreferenceUtil.getInstance().setSongSortOrder(sortOrder);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -126,7 +126,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements
|
|||
}
|
||||
|
||||
public static FoldersFragment newInstance(Context context) {
|
||||
return newInstance(PreferenceUtil.getInstance(context).getStartDirectory());
|
||||
return newInstance(PreferenceUtil.getInstance().getStartDirectory());
|
||||
}
|
||||
|
||||
public static FoldersFragment newInstance(File directory) {
|
||||
|
@ -222,7 +222,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements
|
|||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
setStatusbarColorAuto(view);
|
||||
getMainActivity().getSlidingUpPanelLayout().setShadowHeight(0);
|
||||
//getMainActivity().getSlidingUpPanelLayout().setShadowHeight(0);
|
||||
|
||||
setUpAppbarColor();
|
||||
setUpBreadCrumbs();
|
||||
|
@ -313,8 +313,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements
|
|||
cab = new MaterialCab(getMainActivity(), R.id.cab_stub)
|
||||
.setMenu(menuRes)
|
||||
.setCloseDrawableRes(R.drawable.ic_close_white_24dp)
|
||||
.setBackgroundColor(RetroColorUtil.shiftBackgroundColorForLightText(ThemeStore.primaryColor
|
||||
(getActivity())))
|
||||
.setBackgroundColor(RetroColorUtil.shiftBackgroundColorForLightText(ThemeStore.primaryColor(getActivity())))
|
||||
.start(callback);
|
||||
return cab;
|
||||
}
|
||||
|
@ -346,16 +345,13 @@ public class FoldersFragment extends AbsMainActivityFragment implements
|
|||
getActivity().onBackPressed();
|
||||
break;
|
||||
case R.id.action_go_to_start_directory:
|
||||
setCrumb(new BreadCrumbLayout.Crumb(
|
||||
tryGetCanonicalFile(PreferenceUtil.getInstance(getActivity()).getStartDirectory())),
|
||||
true);
|
||||
setCrumb(new BreadCrumbLayout.Crumb(tryGetCanonicalFile(PreferenceUtil.getInstance().getStartDirectory())), true);
|
||||
return true;
|
||||
case R.id.action_scan:
|
||||
BreadCrumbLayout.Crumb crumb = getActiveCrumb();
|
||||
if (crumb != null) {
|
||||
//noinspection Convert2MethodRef
|
||||
new ListPathsAsyncTask(getActivity(), paths -> scanPaths(paths))
|
||||
.execute(new ListPathsAsyncTask.LoadingInfo(crumb.getFile(), AUDIO_FILE_FILTER));
|
||||
new ListPathsAsyncTask(getActivity(), paths -> scanPaths(paths)).execute(new ListPathsAsyncTask.LoadingInfo(crumb.getFile(), AUDIO_FILE_FILTER));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -435,7 +431,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements
|
|||
getFileComparator()));
|
||||
return true;
|
||||
case R.id.action_set_as_start_directory:
|
||||
PreferenceUtil.getInstance(getActivity()).setStartDirectory(file);
|
||||
PreferenceUtil.getInstance().setStartDirectory(file);
|
||||
Toast.makeText(getActivity(),
|
||||
String.format(getString(R.string.new_start_directory), file.getPath()),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
|
@ -462,14 +458,10 @@ public class FoldersFragment extends AbsMainActivityFragment implements
|
|||
case R.id.action_details:
|
||||
case R.id.action_set_as_ringtone:
|
||||
case R.id.action_delete_from_device:
|
||||
new ListSongsAsyncTask(getActivity(), null, (songs, extra) -> SongMenuHelper
|
||||
.handleMenuClick(getActivity(), songs.get(0), itemId)).execute(
|
||||
new ListSongsAsyncTask.LoadingInfo(toList(file), AUDIO_FILE_FILTER,
|
||||
getFileComparator()));
|
||||
new ListSongsAsyncTask(getActivity(), null, (songs, extra) -> SongMenuHelper.handleMenuClick(getActivity(), songs.get(0), itemId)).execute(new ListSongsAsyncTask.LoadingInfo(toList(file), AUDIO_FILE_FILTER, getFileComparator()));
|
||||
return true;
|
||||
case R.id.action_scan:
|
||||
new ListPathsAsyncTask(getActivity(), this::scanPaths)
|
||||
.execute(new ListPathsAsyncTask.LoadingInfo(file, AUDIO_FILE_FILTER));
|
||||
new ListPathsAsyncTask(getActivity(), this::scanPaths).execute(new ListPathsAsyncTask.LoadingInfo(file, AUDIO_FILE_FILTER));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.mainactivity.home;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.Display;
|
||||
|
@ -41,16 +41,17 @@ import code.name.monkey.retromusic.R;
|
|||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks;
|
||||
import code.name.monkey.retromusic.loaders.SongLoader;
|
||||
import code.name.monkey.retromusic.misc.AppBarStateChangeListener;
|
||||
import code.name.monkey.retromusic.model.Album;
|
||||
import code.name.monkey.retromusic.model.Artist;
|
||||
import code.name.monkey.retromusic.model.Genre;
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.model.smartplaylist.HistoryPlaylist;
|
||||
import code.name.monkey.retromusic.model.smartplaylist.LastAddedPlaylist;
|
||||
import code.name.monkey.retromusic.model.smartplaylist.MyTopTracksPlaylist;
|
||||
import code.name.monkey.retromusic.mvp.contract.HomeContract;
|
||||
import code.name.monkey.retromusic.mvp.presenter.HomePresenter;
|
||||
import code.name.monkey.retromusic.ui.adapter.CollageSongAdapter;
|
||||
import code.name.monkey.retromusic.ui.adapter.GenreAdapter;
|
||||
import code.name.monkey.retromusic.ui.adapter.album.AlbumFullWithAdapter;
|
||||
import code.name.monkey.retromusic.ui.adapter.artist.ArtistAdapter;
|
||||
|
@ -69,16 +70,15 @@ import static code.name.monkey.retromusic.Constants.USER_PROFILE;
|
|||
|
||||
public class BannerHomeFragment extends AbsMainActivityFragment implements MainActivityFragmentCallbacks, HomeContract.HomeView {
|
||||
|
||||
public static final String TAG = "HomeFragment";
|
||||
Unbinder unbinder;
|
||||
|
||||
@BindView(R.id.home_toolbar)
|
||||
public static final String TAG = "BannerHomeFragment";
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar toolbar;
|
||||
|
||||
@BindView(R.id.app_bar)
|
||||
AppBarLayout appbar;
|
||||
|
||||
@BindView(R.id.image)
|
||||
@Nullable
|
||||
ImageView imageView;
|
||||
|
||||
@BindView(R.id.user_image)
|
||||
|
@ -123,18 +123,27 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
@BindView(R.id.suggestion_songs)
|
||||
RecyclerView suggestionsSongs;
|
||||
|
||||
@BindView(R.id.suggestion_container)
|
||||
LinearLayout suggestionsContainer;
|
||||
|
||||
@BindView(R.id.search_icon)
|
||||
ImageView searchIcon;
|
||||
|
||||
private Unbinder unbinder;
|
||||
private HomePresenter homePresenter;
|
||||
private CompositeDisposable disposable;
|
||||
|
||||
public static HomeFragment newInstance() {
|
||||
public static BannerHomeFragment newInstance() {
|
||||
Bundle args = new Bundle();
|
||||
HomeFragment fragment = new HomeFragment();
|
||||
BannerHomeFragment fragment = new BannerHomeFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
private void getTimeOfTheDay() {
|
||||
private void getTimeOfTheDay(boolean b) {
|
||||
Calendar c = Calendar.getInstance();
|
||||
int timeOfDay = c.get(Calendar.HOUR_OF_DAY);
|
||||
|
||||
|
@ -150,22 +159,24 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
} else if (timeOfDay >= 20 && timeOfDay < 24) {
|
||||
images = getResources().getStringArray(R.array.night);
|
||||
}
|
||||
|
||||
String day = images[new Random().nextInt(images.length)];
|
||||
loadTimeImage(day);
|
||||
}
|
||||
|
||||
|
||||
private void loadTimeImage(String day) {
|
||||
//noinspection ConstantConditions
|
||||
if (PreferenceUtil.getInstance(getActivity()).getBannerImage().isEmpty()) {
|
||||
if (imageView != null) {
|
||||
if (imageView != null) {
|
||||
if (PreferenceUtil.getInstance().getBannerImage().isEmpty()) {
|
||||
Glide.with(getActivity()).load(day)
|
||||
.asBitmap()
|
||||
.placeholder(R.drawable.material_design_default)
|
||||
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
|
||||
.into(imageView);
|
||||
} else {
|
||||
loadBannerFromStorage();
|
||||
}
|
||||
} else {
|
||||
loadBannerFromStorage();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -175,7 +186,7 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
.setQuality(100)
|
||||
.setCompressFormat(Bitmap.CompressFormat.WEBP)
|
||||
.compressToBitmapAsFlowable(
|
||||
new File(PreferenceUtil.getInstance(getContext()).getBannerImage(), USER_BANNER))
|
||||
new File(PreferenceUtil.getInstance().getBannerImage(), USER_BANNER))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(imageView::setImageBitmap));
|
||||
|
@ -189,7 +200,7 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
.setQuality(75)
|
||||
.setCompressFormat(Bitmap.CompressFormat.WEBP)
|
||||
.compressToBitmapAsFlowable(
|
||||
new File(PreferenceUtil.getInstance(getContext()).getProfileImage(), USER_PROFILE))
|
||||
new File(PreferenceUtil.getInstance().getProfileImage(), USER_PROFILE))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(imageView::setImageBitmap,
|
||||
|
@ -209,7 +220,8 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_home, container, false);
|
||||
View view = inflater.inflate(PreferenceUtil.getInstance().toggleHomeBanner() ? R.layout.fragment_banner_home : R.layout.fragment_home,
|
||||
container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
return view;
|
||||
}
|
||||
|
@ -217,47 +229,28 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
@Override
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
//setStatusbarColorAuto(view);
|
||||
getMainActivity().getSlidingUpPanelLayout().setShadowHeight(8);
|
||||
setupToolbar();
|
||||
loadImageFromStorage(userImage);
|
||||
homePresenter.subscribe();
|
||||
getTimeOfTheDay();
|
||||
getTimeOfTheDay(PreferenceUtil.getInstance().toggleHomeBanner());
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
private void setupToolbar() {
|
||||
appbar.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||
@Override
|
||||
public void onStateChanged(AppBarLayout appBarLayout, AppBarStateChangeListener.State state) {
|
||||
int color;
|
||||
switch (state) {
|
||||
case COLLAPSED:
|
||||
getMainActivity().setLightStatusbar(!ATHUtil.isWindowBackgroundDark(getContext()));
|
||||
color = ThemeStore.textColorPrimary(getContext());
|
||||
break;
|
||||
default:
|
||||
case EXPANDED:
|
||||
case IDLE:
|
||||
getMainActivity().setLightStatusbar(false);
|
||||
color = ContextCompat.getColor(getContext(), R.color.md_white_1000);
|
||||
break;
|
||||
}
|
||||
title.setTextColor(color);
|
||||
toolbar.getNavigationIcon().setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
});
|
||||
|
||||
int primaryColor = ThemeStore.primaryColor(getContext());
|
||||
|
||||
TintHelper.setTintAuto(container, primaryColor, true);
|
||||
toolbarLayout.setStatusBarScrimColor(primaryColor);
|
||||
toolbarLayout.setContentScrimColor(primaryColor);
|
||||
|
||||
toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp);
|
||||
toolbar.setBackgroundColor(primaryColor);
|
||||
appbar.setBackgroundColor(primaryColor);
|
||||
appbar.addOnOffsetChangedListener((appBarLayout, verticalOffset) ->
|
||||
getMainActivity().setLightStatusbar(!ATHUtil.isWindowBackgroundDark(getContext())));
|
||||
|
||||
getActivity().setTitle(null);
|
||||
getMainActivity().setSupportActionBar(toolbar);
|
||||
toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp);
|
||||
toolbar.setNavigationOnClickListener(v -> showMainMenu());
|
||||
title.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
searchIcon.setImageTintList(ColorStateList.valueOf(ThemeStore.accentColor(getContext())));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -299,7 +292,7 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
recentArtistRV.setLayoutManager(new GridLayoutManager(getMainActivity(),
|
||||
1, GridLayoutManager.HORIZONTAL, false));
|
||||
ArtistAdapter artistAdapter = new ArtistAdapter(getMainActivity(), artists,
|
||||
PreferenceUtil.getInstance(getContext()).getHomeGridStyle(getContext()), false, null);
|
||||
PreferenceUtil.getInstance().getHomeGridStyle(getContext()), false, null);
|
||||
recentArtistRV.setAdapter(artistAdapter);
|
||||
}
|
||||
|
||||
|
@ -318,7 +311,7 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
topArtistRV.setLayoutManager(new GridLayoutManager(getMainActivity(),
|
||||
1, GridLayoutManager.HORIZONTAL, false));
|
||||
ArtistAdapter artistAdapter = new ArtistAdapter(getMainActivity(), artists,
|
||||
PreferenceUtil.getInstance(getContext()).getHomeGridStyle(getContext()), false, null);
|
||||
PreferenceUtil.getInstance().getHomeGridStyle(getContext()), false, null);
|
||||
topArtistRV.setAdapter(artistAdapter);
|
||||
|
||||
}
|
||||
|
@ -332,6 +325,21 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
topAlbumRV.setAdapter(artistAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void suggestions(ArrayList<Song> songs) {
|
||||
if (!songs.isEmpty()) {
|
||||
suggestionsContainer.setVisibility(View.VISIBLE);
|
||||
CollageSongAdapter artistAdapter = new CollageSongAdapter(getMainActivity(), songs);
|
||||
suggestionsSongs.setLayoutManager(new LinearLayoutManager(getMainActivity()));
|
||||
suggestionsSongs.setAdapter(artistAdapter);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playlists(ArrayList<Playlist> playlists) {
|
||||
|
||||
}
|
||||
|
||||
private DisplayMetrics getDisplayMetrics() {
|
||||
Display display = getMainActivity().getWindowManager().getDefaultDisplay();
|
||||
DisplayMetrics metrics = new DisplayMetrics();
|
||||
|
@ -340,12 +348,6 @@ public class BannerHomeFragment extends AbsMainActivityFragment implements MainA
|
|||
return metrics;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void suggestions(ArrayList<Playlist> playlists) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void geners(ArrayList<Genre> genres) {
|
||||
genreContainer.setVisibility(View.VISIBLE);
|
||||
|
|
|
@ -1,305 +0,0 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.mainactivity.home;
|
||||
|
||||
import android.animation.AnimatorSet;
|
||||
import android.app.Activity;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.Display;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.widget.NestedScrollView;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.Unbinder;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks;
|
||||
import code.name.monkey.retromusic.loaders.SongLoader;
|
||||
import code.name.monkey.retromusic.model.Album;
|
||||
import code.name.monkey.retromusic.model.Artist;
|
||||
import code.name.monkey.retromusic.model.Genre;
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.model.smartplaylist.HistoryPlaylist;
|
||||
import code.name.monkey.retromusic.model.smartplaylist.LastAddedPlaylist;
|
||||
import code.name.monkey.retromusic.model.smartplaylist.MyTopTracksPlaylist;
|
||||
import code.name.monkey.retromusic.mvp.contract.HomeContract;
|
||||
import code.name.monkey.retromusic.mvp.presenter.HomePresenter;
|
||||
import code.name.monkey.retromusic.ui.adapter.GenreAdapter;
|
||||
import code.name.monkey.retromusic.ui.adapter.album.AlbumFullWithAdapter;
|
||||
import code.name.monkey.retromusic.ui.adapter.artist.ArtistAdapter;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsMainActivityFragment;
|
||||
import code.name.monkey.retromusic.util.Compressor;
|
||||
import code.name.monkey.retromusic.util.NavigationUtil;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import code.name.monkey.retromusic.views.CircularImageView;
|
||||
import code.name.monkey.retromusic.views.MetalRecyclerViewPager;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
import static code.name.monkey.retromusic.Constants.USER_PROFILE;
|
||||
|
||||
public class HomeFragment extends AbsMainActivityFragment implements MainActivityFragmentCallbacks, HomeContract.HomeView {
|
||||
public static final String TAG = "HomeFragment";
|
||||
private final AnimatorSet animatorSet = new AnimatorSet();
|
||||
|
||||
Unbinder unbinder;
|
||||
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar toolbar;
|
||||
|
||||
@BindView(R.id.app_bar)
|
||||
AppBarLayout appbar;
|
||||
|
||||
@BindView(R.id.user_image)
|
||||
CircularImageView userImage;
|
||||
|
||||
@BindView(R.id.recycler_view)
|
||||
RecyclerView recentArtistRV;
|
||||
|
||||
@BindView(R.id.recent_album)
|
||||
RecyclerView recentAlbumRV;
|
||||
|
||||
@BindView(R.id.top_artist)
|
||||
RecyclerView topArtistRV;
|
||||
|
||||
@BindView(R.id.top_album)
|
||||
MetalRecyclerViewPager topAlbumRV;
|
||||
|
||||
@BindView(R.id.recent_artist_container)
|
||||
View recentArtistContainer;
|
||||
|
||||
@BindView(R.id.recent_albums_container)
|
||||
View recentAlbumsContainer;
|
||||
|
||||
@BindView(R.id.top_artist_container)
|
||||
View topArtistContainer;
|
||||
|
||||
@BindView(R.id.top_albums_container)
|
||||
View topAlbumContainer;
|
||||
|
||||
@BindView(R.id.genres)
|
||||
RecyclerView genresRecyclerView;
|
||||
|
||||
@BindView(R.id.genre_container)
|
||||
LinearLayout genreContainer;
|
||||
|
||||
@BindView(R.id.content_container)
|
||||
NestedScrollView contentContainer;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
@BindView(R.id.search_icon)
|
||||
ImageView searchIcon;
|
||||
|
||||
private HomePresenter homePresenter;
|
||||
private CompositeDisposable disposable;
|
||||
|
||||
public static BannerHomeFragment newInstance() {
|
||||
Bundle args = new Bundle();
|
||||
BannerHomeFragment fragment = new BannerHomeFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
private void loadImageFromStorage(ImageView imageView) {
|
||||
//noinspection ConstantConditions
|
||||
disposable.add(new Compressor(getContext())
|
||||
.setMaxHeight(300)
|
||||
.setMaxWidth(300)
|
||||
.setQuality(75)
|
||||
.setCompressFormat(Bitmap.CompressFormat.WEBP)
|
||||
.compressToBitmapAsFlowable(
|
||||
new File(PreferenceUtil.getInstance(getContext()).getProfileImage(), USER_PROFILE))
|
||||
.subscribeOn(Schedulers.computation())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(imageView::setImageBitmap,
|
||||
throwable -> imageView.setImageDrawable(ContextCompat
|
||||
.getDrawable(getContext(), R.drawable.ic_person_flat))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
disposable = new CompositeDisposable();
|
||||
//noinspection ConstantConditions
|
||||
homePresenter = new HomePresenter(this);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_banner_home, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setStatusbarColorAuto(view);
|
||||
setupToolbar();
|
||||
loadImageFromStorage(userImage);
|
||||
homePresenter.subscribe();
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
private void setupToolbar() {
|
||||
//noinspection ConstantConditions
|
||||
int primaryColor = ThemeStore.primaryColor(getContext());
|
||||
TintHelper.setTintAuto(contentContainer, primaryColor, true);
|
||||
|
||||
toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp);
|
||||
toolbar.setBackgroundColor(primaryColor);
|
||||
appbar.setBackgroundColor(primaryColor);
|
||||
appbar.addOnOffsetChangedListener((appBarLayout, verticalOffset) ->
|
||||
getMainActivity().setLightStatusbar(!ATHUtil.isWindowBackgroundDark(getContext())));
|
||||
|
||||
getActivity().setTitle(null);
|
||||
getMainActivity().setSupportActionBar(toolbar);
|
||||
toolbar.setNavigationOnClickListener(v -> showMainMenu());
|
||||
title.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
searchIcon.setImageTintList(ColorStateList.valueOf(ThemeStore.accentColor(getContext())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleBackPress() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
unbinder.unbind();
|
||||
disposable.clear();
|
||||
homePresenter.unsubscribe();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loading() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showEmptyView() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void completed() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showData(ArrayList<Object> homes) {
|
||||
//homeAdapter.swapDataSet(homes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recentArtist(ArrayList<Artist> artists) {
|
||||
recentArtistContainer.setVisibility(View.VISIBLE);
|
||||
recentArtistRV.setLayoutManager(new GridLayoutManager(getMainActivity(), 1, GridLayoutManager.HORIZONTAL, false));
|
||||
ArtistAdapter artistAdapter = new ArtistAdapter(getMainActivity(), artists, PreferenceUtil.getInstance(getContext()).getHomeGridStyle(getContext()), false, null);
|
||||
recentArtistRV.setAdapter(artistAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recentAlbum(ArrayList<Album> albums) {
|
||||
recentAlbumsContainer.setVisibility(View.VISIBLE);
|
||||
AlbumFullWithAdapter artistAdapter = new AlbumFullWithAdapter(getMainActivity(), getDisplayMetrics());
|
||||
artistAdapter.swapData(albums);
|
||||
recentAlbumRV.setAdapter(artistAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void topArtists(ArrayList<Artist> artists) {
|
||||
topArtistContainer.setVisibility(View.VISIBLE);
|
||||
topArtistRV.setLayoutManager(new GridLayoutManager(getMainActivity(), 1, GridLayoutManager.HORIZONTAL, false));
|
||||
ArtistAdapter artistAdapter = new ArtistAdapter(getMainActivity(), artists, PreferenceUtil.getInstance(getContext()).getHomeGridStyle(getContext()), false, null);
|
||||
topArtistRV.setAdapter(artistAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void topAlbums(ArrayList<Album> albums) {
|
||||
topAlbumContainer.setVisibility(View.VISIBLE);
|
||||
AlbumFullWithAdapter artistAdapter = new AlbumFullWithAdapter(getMainActivity(), getDisplayMetrics());
|
||||
artistAdapter.swapData(albums);
|
||||
topAlbumRV.setAdapter(artistAdapter);
|
||||
}
|
||||
|
||||
private DisplayMetrics getDisplayMetrics() {
|
||||
Display display = getMainActivity().getWindowManager().getDefaultDisplay();
|
||||
DisplayMetrics metrics = new DisplayMetrics();
|
||||
display.getMetrics(metrics);
|
||||
return metrics;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void suggestions(ArrayList<Playlist> playlists) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void geners(ArrayList<Genre> genres) {
|
||||
genreContainer.setVisibility(View.VISIBLE);
|
||||
genresRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
//noinspection ConstantConditions
|
||||
GenreAdapter genreAdapter = new GenreAdapter(getActivity(), genres, R.layout.item_list);
|
||||
genresRecyclerView.setAdapter(genreAdapter);
|
||||
}
|
||||
|
||||
@OnClick({R.id.last_added, R.id.top_played, R.id.action_shuffle, R.id.history, R.id.user_image, R.id.search})
|
||||
void startUserInfo(View view) {
|
||||
Activity activity = getActivity();
|
||||
if (activity != null) {
|
||||
switch (view.getId()) {
|
||||
case R.id.action_shuffle:
|
||||
MusicPlayerRemote
|
||||
.openAndShuffleQueue(SongLoader.getAllSongs(activity).blockingFirst(), true);
|
||||
break;
|
||||
case R.id.last_added:
|
||||
NavigationUtil.goToPlaylistNew(activity, new LastAddedPlaylist(activity));
|
||||
break;
|
||||
case R.id.top_played:
|
||||
NavigationUtil.goToPlaylistNew(activity, new MyTopTracksPlaylist(activity));
|
||||
break;
|
||||
case R.id.history:
|
||||
NavigationUtil.goToPlaylistNew(activity, new HistoryPlaylist(activity));
|
||||
break;
|
||||
case R.id.user_image:
|
||||
NavigationUtil.goToUserInfo(getActivity());
|
||||
break;
|
||||
case R.id.search:
|
||||
NavigationUtil.goToSearch(activity);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -61,14 +61,14 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
|
|||
viewPager.addOnPageChangeListener(this);
|
||||
|
||||
//noinspection ConstantConditions
|
||||
if (PreferenceUtil.getInstance(getContext()).carouselEffect() &&
|
||||
!((PreferenceUtil.getInstance(getContext()).getNowPlayingScreen() == NowPlayingScreen.FULL))) {
|
||||
if (PreferenceUtil.getInstance().carouselEffect() &&
|
||||
!((PreferenceUtil.getInstance().getNowPlayingScreen() == NowPlayingScreen.FULL) || (PreferenceUtil.getInstance().getNowPlayingScreen() == NowPlayingScreen.FIT))) {
|
||||
viewPager.setClipToPadding(false);
|
||||
viewPager.setPadding(96, 0, 96, 0);
|
||||
viewPager.setPageMargin(18);
|
||||
viewPager.setPageTransformer(false, new CarousalPagerTransformer(getContext()));
|
||||
} else {
|
||||
viewPager.setPageTransformer(true, PreferenceUtil.getInstance(getContext()).getAlbumCoverTransform(getContext()));
|
||||
viewPager.setPageTransformer(true, PreferenceUtil.getInstance().getAlbumCoverTransform(getContext()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -107,6 +107,11 @@ public class AdaptiveFragment extends AbsPlayerFragment implements Callbacks {
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_adaptive_player, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
getPlayerActivity().setNavigationbarColorAuto();
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,19 +3,17 @@ package code.name.monkey.retromusic.ui.fragments.player.adaptive;
|
|||
import android.animation.ObjectAnimator;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.AccelerateInterpolator;
|
||||
import android.view.animation.DecelerateInterpolator;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
|
@ -38,21 +36,29 @@ import code.name.monkey.retromusic.views.PlayPauseDrawable;
|
|||
public class AdaptivePlaybackControlsFragment extends AbsPlayerControlsFragment {
|
||||
|
||||
@BindView(R.id.player_play_pause_button)
|
||||
ImageButton playPauseButton;
|
||||
ImageButton playPauseFab;
|
||||
|
||||
@BindView(R.id.player_prev_button)
|
||||
ImageButton prevButton;
|
||||
|
||||
@BindView(R.id.player_next_button)
|
||||
ImageButton nextButton;
|
||||
|
||||
@BindView(R.id.player_repeat_button)
|
||||
ImageButton repeatButton;
|
||||
|
||||
@BindView(R.id.player_shuffle_button)
|
||||
ImageButton shuffleButton;
|
||||
|
||||
@BindView(R.id.player_progress_slider)
|
||||
AppCompatSeekBar progressSlider;
|
||||
|
||||
@BindView(R.id.player_song_total_time)
|
||||
TextView songTotalTime;
|
||||
|
||||
@BindView(R.id.player_song_current_progress)
|
||||
TextView songCurrentProgress;
|
||||
|
||||
@BindView(R.id.volume_fragment_container)
|
||||
View volumeContainer;
|
||||
|
||||
|
@ -108,7 +114,7 @@ public class AdaptivePlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
|
||||
|
@ -116,7 +122,7 @@ public class AdaptivePlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState(true);
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -145,8 +151,8 @@ public class AdaptivePlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
updatePrevNextColor();
|
||||
updatePlayPauseColor();
|
||||
|
||||
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(dark)), false);
|
||||
TintHelper.setTintAuto(playPauseButton, dark, true);
|
||||
TintHelper.setTintAuto(playPauseFab, MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(dark)), false);
|
||||
TintHelper.setTintAuto(playPauseFab, dark, true);
|
||||
TintHelper.setTintAuto(progressSlider, dark, false);
|
||||
}
|
||||
|
||||
|
@ -154,29 +160,21 @@ public class AdaptivePlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
//playPauseButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
|
||||
private void setUpPlayPauseButton() {
|
||||
playPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
playPauseButton.setImageDrawable(playPauseDrawable);
|
||||
updatePlayPauseColor();
|
||||
playPauseButton.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseButton.post(() -> {
|
||||
if (playPauseButton != null) {
|
||||
playPauseButton.setPivotX(playPauseButton.getWidth() / 2);
|
||||
playPauseButton.setPivotY(playPauseButton.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
private void setUpPlayPauseFab() {
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playPauseDrawable.setPause(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playPauseDrawable.setPlay(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void setUpMusicControllers() {
|
||||
setUpPlayPauseButton();
|
||||
setUpPlayPauseFab();
|
||||
setUpPrevNext();
|
||||
setUpRepeatButton();
|
||||
setUpShuffleButton();
|
||||
|
@ -249,8 +247,6 @@ public class AdaptivePlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
if (fromUser) {
|
||||
|
||||
|
||||
MusicPlayerRemote.seekTo(progress);
|
||||
onUpdateProgressViews(MusicPlayerRemote.getSongProgressMillis(),
|
||||
MusicPlayerRemote.getSongDurationMillis());
|
||||
|
@ -259,29 +255,6 @@ public class AdaptivePlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
});
|
||||
}
|
||||
|
||||
public void showBouceAnimation() {
|
||||
playPauseButton.clearAnimation();
|
||||
|
||||
playPauseButton.setScaleX(0.9f);
|
||||
playPauseButton.setScaleY(0.9f);
|
||||
playPauseButton.setVisibility(View.VISIBLE);
|
||||
playPauseButton.setPivotX(playPauseButton.getWidth() / 2);
|
||||
playPauseButton.setPivotY(playPauseButton.getHeight() / 2);
|
||||
|
||||
playPauseButton.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new DecelerateInterpolator())
|
||||
.scaleX(1.1f)
|
||||
.scaleY(1.1f)
|
||||
.withEndAction(() -> playPauseButton.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new AccelerateInterpolator())
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.alpha(1f)
|
||||
.start())
|
||||
.start();
|
||||
}
|
||||
|
||||
@OnClick(R.id.player_play_pause_button)
|
||||
void showAnimation() {
|
||||
|
@ -290,7 +263,7 @@ public class AdaptivePlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
} else {
|
||||
MusicPlayerRemote.resumePlaying();
|
||||
}
|
||||
showBouceAnimation();
|
||||
showBouceAnimation(playPauseFab);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -306,8 +279,7 @@ public class AdaptivePlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
songCurrentProgress.setText(MusicUtil.getReadableDurationString(progress));
|
||||
}
|
||||
|
||||
public void hideVolumeIfAvailable() {
|
||||
volumeContainer.setVisibility(
|
||||
PreferenceUtil.getInstance(getContext()).getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
private void hideVolumeIfAvailable() {
|
||||
volumeContainer.setVisibility(PreferenceUtil.getInstance().getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,11 +4,6 @@ import android.animation.ObjectAnimator;
|
|||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -18,11 +13,14 @@ import android.widget.ImageButton;
|
|||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
|
@ -35,35 +33,44 @@ import code.name.monkey.retromusic.ui.fragments.VolumeFragment;
|
|||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment;
|
||||
import code.name.monkey.retromusic.util.MusicUtil;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import code.name.monkey.retromusic.views.PlayPauseDrawable;
|
||||
|
||||
|
||||
public class BlurPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
||||
|
||||
@BindView(R.id.player_play_pause_button)
|
||||
ImageButton playPauseFab;
|
||||
|
||||
@BindView(R.id.player_prev_button)
|
||||
ImageButton prevButton;
|
||||
|
||||
@BindView(R.id.player_next_button)
|
||||
ImageButton nextButton;
|
||||
|
||||
@BindView(R.id.player_repeat_button)
|
||||
ImageButton repeatButton;
|
||||
|
||||
@BindView(R.id.player_shuffle_button)
|
||||
ImageButton shuffleButton;
|
||||
|
||||
@BindView(R.id.player_progress_slider)
|
||||
AppCompatSeekBar progressSlider;
|
||||
|
||||
@BindView(R.id.player_song_total_time)
|
||||
TextView songTotalTime;
|
||||
|
||||
@BindView(R.id.player_song_current_progress)
|
||||
TextView songCurrentProgress;
|
||||
|
||||
@BindView(R.id.title)
|
||||
AppCompatTextView title;
|
||||
AppCompatTextView songTitle;
|
||||
|
||||
@BindView(R.id.text)
|
||||
TextView text;
|
||||
|
||||
@BindView(R.id.volume_fragment_container)
|
||||
View mVolumeContainer;
|
||||
|
||||
private Unbinder unbinder;
|
||||
private PlayPauseDrawable playerFabPlayPauseDrawable;
|
||||
private int lastPlaybackControlsColor;
|
||||
private int lastDisabledPlaybackControlsColor;
|
||||
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
|
||||
|
@ -89,10 +96,12 @@ public class BlurPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
unbinder = ButterKnife.bind(this, view);
|
||||
setUpMusicControllers();
|
||||
|
||||
mVolumeContainer.setVisibility(PreferenceUtil.getInstance(getContext()).getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
mVolumeContainer.setVisibility(PreferenceUtil.getInstance().getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
|
||||
VolumeFragment mVolumeFragment = (VolumeFragment) getChildFragmentManager().findFragmentById(R.id.volume_fragment);
|
||||
mVolumeFragment.tintWhiteColor();
|
||||
if (mVolumeFragment != null) {
|
||||
mVolumeFragment.tintWhiteColor();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -103,7 +112,7 @@ public class BlurPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
private void updateSong() {
|
||||
Song song = MusicPlayerRemote.getCurrentSong();
|
||||
title.setText(song.title);
|
||||
songTitle.setText(song.title);
|
||||
text.setText(song.artistName);
|
||||
}
|
||||
|
||||
|
@ -121,7 +130,7 @@ public class BlurPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
updateSong();
|
||||
|
@ -135,7 +144,7 @@ public class BlurPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState(true);
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -153,7 +162,10 @@ public class BlurPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
lastPlaybackControlsColor = Color.WHITE;
|
||||
lastDisabledPlaybackControlsColor = ContextCompat.getColor(getContext(), R.color.md_grey_500);
|
||||
|
||||
setProgressBarColor(Color.WHITE);
|
||||
songTitle.setTextColor(lastPlaybackControlsColor);
|
||||
text.setTextColor(lastDisabledPlaybackControlsColor);
|
||||
|
||||
setProgressBarColor();
|
||||
|
||||
songCurrentProgress.setTextColor(lastPlaybackControlsColor);
|
||||
songTotalTime.setTextColor(lastPlaybackControlsColor);
|
||||
|
@ -163,35 +175,25 @@ public class BlurPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
updatePrevNextColor();
|
||||
}
|
||||
|
||||
public void setProgressBarColor(int newColor) {
|
||||
TintHelper.setTintAuto(progressSlider, newColor, false);
|
||||
private void setProgressBarColor() {
|
||||
TintHelper.setTintAuto(progressSlider, Color.WHITE, false);
|
||||
}
|
||||
|
||||
private void setUpPlayPauseFab() {
|
||||
final int fabColor = Color.WHITE;
|
||||
TintHelper.setTintAuto(playPauseFab, fabColor, true);
|
||||
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
|
||||
playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
TintHelper.setTintAuto(playPauseFab, Color.WHITE, true);
|
||||
TintHelper.setTintAuto(playPauseFab, Color.BLACK, false);
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseFab.post(() -> {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playerFabPlayPauseDrawable.setPause(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playerFabPlayPauseDrawable.setPlay(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void setUpMusicControllers() {
|
||||
setUpPlayPauseFab();
|
||||
setUpPrevNext();
|
||||
|
@ -294,8 +296,4 @@ public class BlurPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
songTotalTime.setText(MusicUtil.getReadableDurationString(total));
|
||||
songCurrentProgress.setText(MusicUtil.getReadableDurationString(progress));
|
||||
}
|
||||
|
||||
public void hideVolumeIfAvailable() {
|
||||
mVolumeContainer.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,29 +4,25 @@ import android.app.Activity;
|
|||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.glide.BlurTransformation;
|
||||
|
@ -43,8 +39,7 @@ import code.name.monkey.retromusic.ui.fragments.player.normal.PlayerFragment;
|
|||
* @author Hemanth S (h4h13).
|
||||
*/
|
||||
|
||||
public class BlurPlayerFragment extends AbsPlayerFragment implements
|
||||
PlayerAlbumCoverFragment.Callbacks {
|
||||
public class BlurPlayerFragment extends AbsPlayerFragment implements PlayerAlbumCoverFragment.Callbacks {
|
||||
|
||||
@BindView(R.id.player_toolbar)
|
||||
Toolbar toolbar;
|
||||
|
@ -59,10 +54,6 @@ public class BlurPlayerFragment extends AbsPlayerFragment implements
|
|||
@BindView(R.id.recycler_view)
|
||||
RecyclerView recyclerView;
|
||||
|
||||
@Nullable
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
private int lastColor;
|
||||
private BlurPlaybackControlsFragment playbackControlsFragment;
|
||||
private Unbinder unbinder;
|
||||
|
@ -114,18 +105,7 @@ public class BlurPlayerFragment extends AbsPlayerFragment implements
|
|||
playbackControlsFragment.setDark(color);
|
||||
lastColor = color;
|
||||
getCallbacks().onPaletteColorChanged();
|
||||
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar, Color.WHITE, getActivity());
|
||||
|
||||
if (title != null && playingQueueAdapter != null) {
|
||||
if (ColorUtil.isColorLight(color)) {
|
||||
title.setTextColor(Color.BLACK);
|
||||
playingQueueAdapter.usePalette(false);
|
||||
} else {
|
||||
title.setTextColor(Color.WHITE);
|
||||
playingQueueAdapter.usePalette(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -160,12 +140,18 @@ public class BlurPlayerFragment extends AbsPlayerFragment implements
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_blur, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
getPlayerActivity().setNavigationbarColor(Color.TRANSPARENT);
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
setUpSubFragments();
|
||||
setUpPlayerToolbar();
|
||||
}
|
||||
|
@ -177,7 +163,9 @@ public class BlurPlayerFragment extends AbsPlayerFragment implements
|
|||
PlayerAlbumCoverFragment playerAlbumCoverFragment =
|
||||
(PlayerAlbumCoverFragment) getChildFragmentManager()
|
||||
.findFragmentById(R.id.player_album_cover_fragment);
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
if (playerAlbumCoverFragment != null) {
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpPlayerToolbar() {
|
||||
|
@ -238,9 +226,7 @@ public class BlurPlayerFragment extends AbsPlayerFragment implements
|
|||
(AppCompatActivity) getActivity(),
|
||||
MusicPlayerRemote.getPlayingQueue(),
|
||||
MusicPlayerRemote.getPosition(),
|
||||
R.layout.item_song,
|
||||
false,
|
||||
null);
|
||||
R.layout.item_song);
|
||||
layoutManager = new LinearLayoutManager(getContext());
|
||||
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
|
|
|
@ -2,13 +2,6 @@ package code.name.monkey.retromusic.ui.fragments.player.card;
|
|||
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -19,6 +12,13 @@ import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemA
|
|||
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
@ -42,8 +42,10 @@ public class CardFragment extends AbsPlayerFragment implements PlayerAlbumCoverF
|
|||
|
||||
RecyclerView recyclerView;
|
||||
@Nullable
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
private RecyclerView.Adapter wrappedAdapter;
|
||||
private RecyclerViewDragDropManager recyclerViewDragDropManager;
|
||||
private PlayingQueueAdapter playingQueueAdapter;
|
||||
|
@ -158,6 +160,11 @@ public class CardFragment extends AbsPlayerFragment implements PlayerAlbumCoverF
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_card_player, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
getPlayerActivity().setNavigationbarColor(Color.TRANSPARENT);
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -212,9 +219,7 @@ public class CardFragment extends AbsPlayerFragment implements PlayerAlbumCoverF
|
|||
(AppCompatActivity) getActivity(),
|
||||
MusicPlayerRemote.getPlayingQueue(),
|
||||
MusicPlayerRemote.getPosition(),
|
||||
R.layout.item_song,
|
||||
false,
|
||||
null);
|
||||
R.layout.item_song);
|
||||
wrappedAdapter = recyclerViewDragDropManager.createWrappedAdapter(playingQueueAdapter);
|
||||
|
||||
layoutManager = new LinearLayoutManager(getContext());
|
||||
|
|
|
@ -3,22 +3,20 @@ package code.name.monkey.retromusic.ui.fragments.player.card;
|
|||
import android.animation.ObjectAnimator;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.cardview.widget.CardView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.AccelerateInterpolator;
|
||||
import android.view.animation.DecelerateInterpolator;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.cardview.widget.CardView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
|
@ -42,34 +40,47 @@ import code.name.monkey.retromusic.views.PlayPauseDrawable;
|
|||
|
||||
public class CardPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
||||
@BindView(R.id.player_play_pause_button)
|
||||
ImageButton playPauseButton;
|
||||
ImageButton playPauseFab;
|
||||
|
||||
@BindView(R.id.player_prev_button)
|
||||
ImageButton prevButton;
|
||||
|
||||
@BindView(R.id.player_next_button)
|
||||
ImageButton nextButton;
|
||||
|
||||
@BindView(R.id.player_repeat_button)
|
||||
ImageButton repeatButton;
|
||||
|
||||
@BindView(R.id.player_shuffle_button)
|
||||
ImageButton shuffleButton;
|
||||
|
||||
@BindView(R.id.player_progress_slider)
|
||||
AppCompatSeekBar progressSlider;
|
||||
|
||||
@BindView(R.id.player_song_total_time)
|
||||
TextView songTotalTime;
|
||||
|
||||
@BindView(R.id.player_song_current_progress)
|
||||
TextView songCurrentProgress;
|
||||
|
||||
@BindView(R.id.title)
|
||||
AppCompatTextView title;
|
||||
|
||||
@BindView(R.id.text)
|
||||
TextView text;
|
||||
|
||||
@BindView(R.id.volume_fragment_container)
|
||||
View volumeContainer;
|
||||
|
||||
@BindView(R.id.menu)
|
||||
View menuView;
|
||||
|
||||
@BindView(R.id.image_text_container)
|
||||
CardView colorContainer;
|
||||
|
||||
@BindView(R.id.image)
|
||||
ImageView playImageView;
|
||||
|
||||
@BindView(R.id.playback_controls)
|
||||
View playbackControls;
|
||||
|
||||
|
@ -94,7 +105,7 @@ public class CardPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
setUpMusicControllers();
|
||||
|
@ -144,7 +155,7 @@ public class CardPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
updateSong();
|
||||
|
@ -158,7 +169,7 @@ public class CardPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState(true);
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -188,37 +199,28 @@ public class CardPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
updatePlayPauseColor();
|
||||
updateProgressTextColor();
|
||||
|
||||
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(dark)), false);
|
||||
TintHelper.setTintAuto(playPauseButton, dark, true);
|
||||
TintHelper.setTintAuto(playPauseFab, MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(dark)), false);
|
||||
TintHelper.setTintAuto(playPauseFab, dark, true);
|
||||
}
|
||||
|
||||
private void updatePlayPauseColor() {
|
||||
//playPauseButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
|
||||
private void setUpPlayPauseButton() {
|
||||
playPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
playPauseButton.setImageDrawable(playPauseDrawable);
|
||||
updatePlayPauseColor();
|
||||
playPauseButton.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseButton.post(() -> {
|
||||
if (playPauseButton != null) {
|
||||
playPauseButton.setPivotX(playPauseButton.getWidth() / 2);
|
||||
playPauseButton.setPivotY(playPauseButton.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
private void setUpPlayPauseFab() {
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playPauseDrawable.setPause(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playPauseDrawable.setPlay(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpMusicControllers() {
|
||||
setUpPlayPauseButton();
|
||||
setUpPlayPauseFab();
|
||||
setUpPrevNext();
|
||||
setUpRepeatButton();
|
||||
setUpShuffleButton();
|
||||
|
@ -303,30 +305,6 @@ public class CardPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
});
|
||||
}
|
||||
|
||||
public void showBouceAnimation() {
|
||||
playPauseButton.clearAnimation();
|
||||
|
||||
playPauseButton.setScaleX(0.9f);
|
||||
playPauseButton.setScaleY(0.9f);
|
||||
playPauseButton.setVisibility(View.VISIBLE);
|
||||
playPauseButton.setPivotX(playPauseButton.getWidth() / 2);
|
||||
playPauseButton.setPivotY(playPauseButton.getHeight() / 2);
|
||||
|
||||
playPauseButton.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new DecelerateInterpolator())
|
||||
.scaleX(1.1f)
|
||||
.scaleY(1.1f)
|
||||
.withEndAction(() -> playPauseButton.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new AccelerateInterpolator())
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.alpha(1f)
|
||||
.start())
|
||||
.start();
|
||||
}
|
||||
|
||||
@OnClick(R.id.player_play_pause_button)
|
||||
void showAnimation() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
|
@ -334,7 +312,7 @@ public class CardPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
} else {
|
||||
MusicPlayerRemote.resumePlaying();
|
||||
}
|
||||
showBouceAnimation();
|
||||
showBouceAnimation(playPauseFab);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -350,9 +328,7 @@ public class CardPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
songCurrentProgress.setText(MusicUtil.getReadableDurationString(progress));
|
||||
}
|
||||
|
||||
public void hideVolumeIfAvailable() {
|
||||
volumeContainer.setVisibility(PreferenceUtil.getInstance(getContext()).getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
private void hideVolumeIfAvailable() {
|
||||
volumeContainer.setVisibility(PreferenceUtil.getInstance().getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -25,7 +25,6 @@ import code.name.monkey.retromusic.glide.RetroMusicColoredTarget;
|
|||
import code.name.monkey.retromusic.glide.SongGlideRequest;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.ui.fragments.VolumeFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.PlayerAlbumCoverFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.normal.PlayerFragment;
|
||||
|
@ -93,6 +92,9 @@ public class CardBlurFragment extends AbsPlayerFragment implements
|
|||
lastColor = color;
|
||||
getCallbacks().onPaletteColorChanged();
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar, Color.WHITE, getActivity());
|
||||
|
||||
toolbar.setTitleTextColor(Color.WHITE);
|
||||
toolbar.setSubtitleTextColor(Color.WHITE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -120,6 +122,11 @@ public class CardBlurFragment extends AbsPlayerFragment implements
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_card_blur_player, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
getPlayerActivity().setNavigationbarColor(Color.TRANSPARENT);
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -136,9 +143,10 @@ public class CardBlurFragment extends AbsPlayerFragment implements
|
|||
|
||||
PlayerAlbumCoverFragment playerAlbumCoverFragment =
|
||||
(PlayerAlbumCoverFragment) getChildFragmentManager().findFragmentById(R.id.player_album_cover_fragment);
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
playerAlbumCoverFragment.removeEffect();
|
||||
|
||||
if (playerAlbumCoverFragment != null) {
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
playerAlbumCoverFragment.removeEffect();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -147,23 +155,29 @@ public class CardBlurFragment extends AbsPlayerFragment implements
|
|||
toolbar.setNavigationOnClickListener(v -> getActivity().onBackPressed());
|
||||
toolbar.setOnMenuItemClickListener(this);
|
||||
|
||||
/* for (int i = 0; i < toolbar.getMenu().size(); i++) {
|
||||
MenuItem menuItem = toolbar.getMenu().getItem(i);
|
||||
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
|
||||
}*/
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar, Color.WHITE, getActivity());
|
||||
toolbar.setTitleTextColor(Color.WHITE);
|
||||
toolbar.setSubtitleTextColor(Color.WHITE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updateIsFavorite();
|
||||
updateBlur();
|
||||
updateSong();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
updateIsFavorite();
|
||||
updateBlur();
|
||||
updateSong();
|
||||
}
|
||||
|
||||
private void updateSong() {
|
||||
Song song = MusicPlayerRemote.getCurrentSong();
|
||||
toolbar.setTitle(song.title);
|
||||
toolbar.setSubtitle(song.artistName);
|
||||
}
|
||||
|
||||
private void updateBlur() {
|
||||
|
|
|
@ -30,13 +30,11 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
|||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper;
|
||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler;
|
||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.service.MusicService;
|
||||
import code.name.monkey.retromusic.ui.fragments.VolumeFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment;
|
||||
import code.name.monkey.retromusic.util.MusicUtil;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import code.name.monkey.retromusic.views.PlayPauseDrawable;
|
||||
|
||||
public class CardBlurPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
||||
@BindView(R.id.player_play_pause_button)
|
||||
|
@ -66,23 +64,12 @@ public class CardBlurPlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
@BindView(R.id.volume_fragment_container)
|
||||
View volumeContainer;
|
||||
|
||||
@BindView(R.id.text)
|
||||
TextView text;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
private Unbinder unbinder;
|
||||
private PlayPauseDrawable playerFabPlayPauseDrawable;
|
||||
private int lastPlaybackControlsColor;
|
||||
private int lastDisabledPlaybackControlsColor;
|
||||
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
|
||||
|
||||
private void updateSong() {
|
||||
Song song = MusicPlayerRemote.getCurrentSong();
|
||||
title.setText(song.title);
|
||||
text.setText(song.artistName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -104,7 +91,6 @@ public class CardBlurPlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
unbinder = ButterKnife.bind(this, view);
|
||||
setUpMusicControllers();
|
||||
hideVolumeIfAvailable();
|
||||
title.setSelected(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -127,22 +113,15 @@ public class CardBlurPlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateSong();
|
||||
updateShuffleState();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
super.onPlayingMetaChanged();
|
||||
updateSong();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState(true);
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -157,10 +136,6 @@ public class CardBlurPlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
|
||||
@Override
|
||||
public void setDark(int dark) {
|
||||
|
||||
title.setTextColor(Color.WHITE);
|
||||
text.setTextColor(Color.WHITE);
|
||||
|
||||
lastPlaybackControlsColor = Color.WHITE;
|
||||
lastDisabledPlaybackControlsColor = ColorUtil.withAlpha(Color.WHITE, 0.3f);
|
||||
|
||||
|
@ -172,28 +147,16 @@ public class CardBlurPlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
|
||||
|
||||
private void setUpPlayPauseFab() {
|
||||
final int fabColor = Color.WHITE;
|
||||
TintHelper.setTintAuto(playPauseFab, fabColor, true);
|
||||
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
|
||||
playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(),
|
||||
ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
TintHelper.setTintAuto(playPauseFab, Color.WHITE, true);
|
||||
TintHelper.setTintAuto(playPauseFab, Color.BLACK, false);
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseFab.post(() -> {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playerFabPlayPauseDrawable.setPause(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playerFabPlayPauseDrawable.setPlay(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -341,8 +304,6 @@ public class CardBlurPlaybackControlsFragment extends AbsPlayerControlsFragment
|
|||
}
|
||||
|
||||
public void hideVolumeIfAvailable() {
|
||||
volumeContainer.setVisibility(PreferenceUtil.getInstance(getContext()).getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
volumeContainer.setVisibility(PreferenceUtil.getInstance().getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -136,6 +136,10 @@ public class ColorFragment extends AbsPlayerFragment {
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_color_player, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -233,7 +237,11 @@ public class ColorFragment extends AbsPlayerFragment {
|
|||
|
||||
this.backgroundColor = backgroundColor;
|
||||
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setLightNavigationBar(ColorUtil.isColorLight(backgroundColor));
|
||||
}
|
||||
getCallbacks().onPaletteColorChanged();
|
||||
|
||||
}
|
||||
|
||||
private void colorize(int i) {
|
||||
|
@ -241,7 +249,7 @@ public class ColorFragment extends AbsPlayerFragment {
|
|||
valueAnimator.cancel();
|
||||
}
|
||||
|
||||
valueAnimator = ValueAnimator.ofObject(new ArgbEvaluator(), Color.TRANSPARENT, i);
|
||||
valueAnimator = ValueAnimator.ofObject(new ArgbEvaluator(), backgroundColor, i);
|
||||
valueAnimator.addUpdateListener(animation -> {
|
||||
if (colorBackground != null) {
|
||||
colorBackground.setBackgroundColor((Integer) animation.getAnimatedValue());
|
||||
|
|
|
@ -4,30 +4,28 @@ import android.animation.ObjectAnimator;
|
|||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.AccelerateInterpolator;
|
||||
import android.view.animation.DecelerateInterpolator;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.Unbinder;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper;
|
||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler;
|
||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.service.MusicService;
|
||||
|
@ -35,35 +33,43 @@ import code.name.monkey.retromusic.ui.fragments.VolumeFragment;
|
|||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment;
|
||||
import code.name.monkey.retromusic.util.MusicUtil;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import code.name.monkey.retromusic.views.PlayPauseDrawable;
|
||||
|
||||
public class ColorPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
||||
|
||||
@BindView(R.id.player_play_pause_button)
|
||||
ImageButton playPauseFab;
|
||||
|
||||
@BindView(R.id.player_prev_button)
|
||||
ImageButton prevButton;
|
||||
|
||||
@BindView(R.id.player_next_button)
|
||||
ImageButton nextButton;
|
||||
|
||||
@BindView(R.id.player_repeat_button)
|
||||
ImageButton repeatButton;
|
||||
|
||||
@BindView(R.id.player_shuffle_button)
|
||||
ImageButton shuffleButton;
|
||||
|
||||
@BindView(R.id.player_progress_slider)
|
||||
AppCompatSeekBar progressSlider;
|
||||
|
||||
@BindView(R.id.player_song_total_time)
|
||||
TextView songTotalTime;
|
||||
|
||||
@BindView(R.id.player_song_current_progress)
|
||||
TextView songCurrentProgress;
|
||||
|
||||
@BindView(R.id.title)
|
||||
AppCompatTextView title;
|
||||
|
||||
@BindView(R.id.text)
|
||||
TextView text;
|
||||
|
||||
@BindView(R.id.volume_fragment_container)
|
||||
View volumeContainer;
|
||||
|
||||
private Unbinder unbinder;
|
||||
private PlayPauseDrawable playerFabPlayPauseDrawable;
|
||||
private int lastPlaybackControlsColor;
|
||||
private int lastDisabledPlaybackControlsColor;
|
||||
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
|
||||
|
@ -85,12 +91,24 @@ public class ColorPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
progressViewUpdateHelper.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
progressViewUpdateHelper.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
setUpMusicControllers();
|
||||
|
||||
if (PreferenceUtil.getInstance(getContext()).getVolumeToggle()) {
|
||||
if (PreferenceUtil.getInstance().getVolumeToggle()) {
|
||||
volumeContainer.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
volumeContainer.setVisibility(View.GONE);
|
||||
|
@ -109,24 +127,11 @@ public class ColorPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
Song song = MusicPlayerRemote.getCurrentSong();
|
||||
title.setText(song.title);
|
||||
text.setText(song.artistName);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
progressViewUpdateHelper.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
progressViewUpdateHelper.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
updateSong();
|
||||
|
@ -140,7 +145,7 @@ public class ColorPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState(true);
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -182,27 +187,21 @@ public class ColorPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
|
||||
private void setUpPlayPauseFab() {
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
|
||||
playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(Color.BLACK)), PorterDuff.Mode.SRC_IN);
|
||||
//playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseFab.post(() -> {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
TintHelper.setTintAuto(playPauseFab, Color.WHITE, true);
|
||||
TintHelper.setTintAuto(playPauseFab, Color.BLACK, false);
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playerFabPlayPauseDrawable.setPause(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playerFabPlayPauseDrawable.setPlay(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void setUpMusicControllers() {
|
||||
setUpPlayPauseFab();
|
||||
setUpPrevNext();
|
||||
|
@ -293,40 +292,6 @@ public class ColorPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
});
|
||||
}
|
||||
|
||||
public void showBouceAnimation() {
|
||||
playPauseFab.clearAnimation();
|
||||
|
||||
playPauseFab.setScaleX(0.9f);
|
||||
playPauseFab.setScaleY(0.9f);
|
||||
playPauseFab.setVisibility(View.VISIBLE);
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
|
||||
playPauseFab.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new DecelerateInterpolator())
|
||||
.scaleX(1.1f)
|
||||
.scaleY(1.1f)
|
||||
.withEndAction(() -> playPauseFab.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new AccelerateInterpolator())
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.alpha(1f)
|
||||
.start())
|
||||
.start();
|
||||
}
|
||||
|
||||
@OnClick(R.id.player_play_pause_button)
|
||||
void showAnimation() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
MusicPlayerRemote.pauseSong();
|
||||
} else {
|
||||
MusicPlayerRemote.resumePlaying();
|
||||
}
|
||||
showBouceAnimation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdateProgressViews(int progress, int total) {
|
||||
progressSlider.setMax(total);
|
||||
|
@ -341,8 +306,6 @@ public class ColorPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
}
|
||||
|
||||
public void hideVolumeIfAvailable() {
|
||||
volumeContainer.setVisibility(PreferenceUtil.getInstance(getContext()).getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
volumeContainer.setVisibility(PreferenceUtil.getInstance().getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,154 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.player.fit;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerFragment;
|
||||
import code.name.monkey.retromusic.ui.fragments.player.PlayerAlbumCoverFragment;
|
||||
|
||||
|
||||
public class FitFragment extends AbsPlayerFragment implements PlayerAlbumCoverFragment.Callbacks {
|
||||
|
||||
@BindView(R.id.player_toolbar)
|
||||
Toolbar toolbar;
|
||||
|
||||
private int lastColor;
|
||||
private FitPlaybackControlsFragment playbackControlsFragment;
|
||||
private Unbinder unbinder;
|
||||
|
||||
public FitFragment() {
|
||||
}
|
||||
|
||||
public static FitFragment newInstance() {
|
||||
Bundle args = new Bundle();
|
||||
FitFragment fragment = new FitFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ColorInt
|
||||
public int getPaletteColor() {
|
||||
return lastColor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShow() {
|
||||
playbackControlsFragment.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHide() {
|
||||
playbackControlsFragment.hide();
|
||||
onBackPressed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBackPressed() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Toolbar getToolbar() {
|
||||
return toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int toolbarIconColor() {
|
||||
return ATHUtil.resolveColor(getContext(), R.attr.iconColor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onColorChanged(int color) {
|
||||
playbackControlsFragment.setDark(color);
|
||||
lastColor = color;
|
||||
getCallbacks().onPaletteColorChanged();
|
||||
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar, ATHUtil.resolveColor(getContext(), R.attr.iconColor), getActivity());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void toggleFavorite(Song song) {
|
||||
super.toggleFavorite(song);
|
||||
if (song.id == MusicPlayerRemote.getCurrentSong().id) {
|
||||
updateIsFavorite();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoriteToggled() {
|
||||
toggleFavorite(MusicPlayerRemote.getCurrentSong());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
unbinder.unbind();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_fit, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderStatusBar();
|
||||
getPlayerActivity().setNavigationbarColorAuto();
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setUpSubFragments();
|
||||
setUpPlayerToolbar();
|
||||
}
|
||||
|
||||
private void setUpSubFragments() {
|
||||
playbackControlsFragment = (FitPlaybackControlsFragment) getChildFragmentManager().findFragmentById(R.id.playback_controls_fragment);
|
||||
|
||||
PlayerAlbumCoverFragment playerAlbumCoverFragment = (PlayerAlbumCoverFragment) getChildFragmentManager().findFragmentById(R.id.player_album_cover_fragment);
|
||||
if (playerAlbumCoverFragment != null) {
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
playerAlbumCoverFragment.removeEffect();
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpPlayerToolbar() {
|
||||
toolbar.inflateMenu(R.menu.menu_player);
|
||||
toolbar.setNavigationOnClickListener(v -> getActivity().onBackPressed());
|
||||
toolbar.setOnMenuItemClickListener(this);
|
||||
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar,
|
||||
ATHUtil.resolveColor(getContext(), R.attr.iconColor), getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updateIsFavorite();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
updateIsFavorite();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,344 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.player.fit;
|
||||
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.drawable.ClipDrawable;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.AccelerateInterpolator;
|
||||
import android.view.animation.DecelerateInterpolator;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.Unbinder;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper;
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper;
|
||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler;
|
||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.service.MusicService;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment;
|
||||
import code.name.monkey.retromusic.util.MusicUtil;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
|
||||
public class FitPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
||||
|
||||
@BindView(R.id.player_play_pause_button)
|
||||
ImageButton playPauseFab;
|
||||
|
||||
@BindView(R.id.player_prev_button)
|
||||
ImageButton prevButton;
|
||||
|
||||
@BindView(R.id.player_next_button)
|
||||
ImageButton nextButton;
|
||||
|
||||
@BindView(R.id.player_repeat_button)
|
||||
ImageButton repeatButton;
|
||||
|
||||
@BindView(R.id.player_shuffle_button)
|
||||
ImageButton shuffleButton;
|
||||
|
||||
@BindView(R.id.player_progress_slider)
|
||||
AppCompatSeekBar progressSlider;
|
||||
|
||||
@BindView(R.id.player_song_total_time)
|
||||
TextView songTotalTime;
|
||||
|
||||
@BindView(R.id.player_song_current_progress)
|
||||
TextView songCurrentProgress;
|
||||
|
||||
@BindView(R.id.title)
|
||||
AppCompatTextView title;
|
||||
|
||||
@BindView(R.id.text)
|
||||
TextView text;
|
||||
|
||||
@BindView(R.id.volume_fragment_container)
|
||||
View mVolumeContainer;
|
||||
|
||||
private Unbinder unbinder;
|
||||
private int lastPlaybackControlsColor;
|
||||
private int lastDisabledPlaybackControlsColor;
|
||||
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
progressViewUpdateHelper = new MusicProgressViewUpdateHelper(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_fit_playback_controls, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
setUpMusicControllers();
|
||||
|
||||
if (PreferenceUtil.getInstance().getVolumeToggle()) {
|
||||
mVolumeContainer.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mVolumeContainer.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
unbinder.unbind();
|
||||
}
|
||||
|
||||
private void updateSong() {
|
||||
Song song = MusicPlayerRemote.getCurrentSong();
|
||||
title.setText(song.title);
|
||||
text.setText(song.artistName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
progressViewUpdateHelper.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
progressViewUpdateHelper.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
updateSong();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
super.onPlayingMetaChanged();
|
||||
updateSong();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRepeatModeChanged() {
|
||||
updateRepeatState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShuffleModeChanged() {
|
||||
updateShuffleState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDark(int dark) {
|
||||
int color = ATHUtil.resolveColor(getActivity(), android.R.attr.colorBackground);
|
||||
if (ColorUtil.isColorLight(color)) {
|
||||
lastPlaybackControlsColor = MaterialValueHelper.getSecondaryTextColor(getActivity(), true);
|
||||
lastDisabledPlaybackControlsColor = MaterialValueHelper.getSecondaryDisabledTextColor(getActivity(), true);
|
||||
} else {
|
||||
lastPlaybackControlsColor = MaterialValueHelper.getPrimaryTextColor(getActivity(), false);
|
||||
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(getActivity(), false);
|
||||
}
|
||||
|
||||
if (PreferenceUtil.getInstance().getAdaptiveColor()) {
|
||||
setFabColor(dark);
|
||||
} else {
|
||||
setFabColor(ThemeStore.accentColor(getContext()));
|
||||
}
|
||||
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
updatePrevNextColor();
|
||||
}
|
||||
|
||||
private void setFabColor(int i) {
|
||||
TintHelper.setTintAuto(playPauseFab, MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(i)), false);
|
||||
TintHelper.setTintAuto(playPauseFab, i, true);
|
||||
//setProgressBarColor(i);
|
||||
}
|
||||
|
||||
private void setProgressBarColor(int newColor) {
|
||||
LayerDrawable ld = (LayerDrawable) progressSlider.getProgressDrawable();
|
||||
ClipDrawable clipDrawable = (ClipDrawable) ld.findDrawableByLayerId(android.R.id.progress);
|
||||
clipDrawable.setColorFilter(newColor, PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
|
||||
private void setUpPlayPauseFab() {
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpMusicControllers() {
|
||||
setUpPlayPauseFab();
|
||||
setUpPrevNext();
|
||||
setUpRepeatButton();
|
||||
setUpShuffleButton();
|
||||
setUpProgressSlider();
|
||||
}
|
||||
|
||||
private void setUpPrevNext() {
|
||||
updatePrevNextColor();
|
||||
nextButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong());
|
||||
prevButton.setOnClickListener(v -> MusicPlayerRemote.back());
|
||||
}
|
||||
|
||||
private void updatePrevNextColor() {
|
||||
nextButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
prevButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
|
||||
private void setUpShuffleButton() {
|
||||
shuffleButton.setOnClickListener(v -> MusicPlayerRemote.toggleShuffleMode());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateShuffleState() {
|
||||
switch (MusicPlayerRemote.getShuffleMode()) {
|
||||
case MusicService.SHUFFLE_MODE_SHUFFLE:
|
||||
shuffleButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
default:
|
||||
shuffleButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpRepeatButton() {
|
||||
repeatButton.setOnClickListener(v -> MusicPlayerRemote.cycleRepeatMode());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateRepeatState() {
|
||||
switch (MusicPlayerRemote.getRepeatMode()) {
|
||||
case MusicService.REPEAT_MODE_NONE:
|
||||
repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp);
|
||||
repeatButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
case MusicService.REPEAT_MODE_ALL:
|
||||
repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp);
|
||||
repeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
case MusicService.REPEAT_MODE_THIS:
|
||||
repeatButton.setImageResource(R.drawable.ic_repeat_one_white_24dp);
|
||||
repeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void show() {
|
||||
playPauseFab.animate()
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.rotation(360f)
|
||||
.setInterpolator(new DecelerateInterpolator())
|
||||
.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void hide() {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setScaleX(0f);
|
||||
playPauseFab.setScaleY(0f);
|
||||
playPauseFab.setRotation(0f);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUpProgressSlider() {
|
||||
progressSlider.setOnSeekBarChangeListener(new SimpleOnSeekbarChangeListener() {
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
if (fromUser) {
|
||||
MusicPlayerRemote.seekTo(progress);
|
||||
onUpdateProgressViews(MusicPlayerRemote.getSongProgressMillis(),
|
||||
MusicPlayerRemote.getSongDurationMillis());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void showBouceAnimation() {
|
||||
playPauseFab.clearAnimation();
|
||||
|
||||
playPauseFab.setScaleX(0.9f);
|
||||
playPauseFab.setScaleY(0.9f);
|
||||
playPauseFab.setVisibility(View.VISIBLE);
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
|
||||
playPauseFab.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new DecelerateInterpolator())
|
||||
.scaleX(1.1f)
|
||||
.scaleY(1.1f)
|
||||
.withEndAction(() -> playPauseFab.animate()
|
||||
.setDuration(200)
|
||||
.setInterpolator(new AccelerateInterpolator())
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.alpha(1f)
|
||||
.start())
|
||||
.start();
|
||||
}
|
||||
|
||||
@OnClick(R.id.player_play_pause_button)
|
||||
void showAnimation() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
MusicPlayerRemote.pauseSong();
|
||||
} else {
|
||||
MusicPlayerRemote.resumePlaying();
|
||||
}
|
||||
showBouceAnimation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdateProgressViews(int progress, int total) {
|
||||
progressSlider.setMax(total);
|
||||
|
||||
ObjectAnimator animator = ObjectAnimator.ofInt(progressSlider, "progress", progress);
|
||||
animator.setDuration(1500);
|
||||
animator.setInterpolator(new LinearInterpolator());
|
||||
animator.start();
|
||||
|
||||
songTotalTime.setText(MusicUtil.getReadableDurationString(total));
|
||||
songCurrentProgress.setText(MusicUtil.getReadableDurationString(progress));
|
||||
}
|
||||
}
|
|
@ -3,8 +3,6 @@ package code.name.monkey.retromusic.ui.fragments.player.flat;
|
|||
import android.animation.ObjectAnimator;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -15,6 +13,8 @@ import android.widget.ImageView;
|
|||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
@ -40,25 +40,35 @@ public class FlatPlaybackControlsFragment extends AbsMusicServiceFragment implem
|
|||
|
||||
@BindView(R.id.text)
|
||||
TextView mText;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView mTitle;
|
||||
|
||||
@BindView(R.id.playback_controls)
|
||||
ViewGroup viewGroup;
|
||||
|
||||
@BindView(R.id.player_song_total_time)
|
||||
TextView mSongTotalTime;
|
||||
|
||||
@BindView(R.id.player_song_current_progress)
|
||||
TextView mPlayerSongCurrentProgress;
|
||||
|
||||
@BindView(R.id.player_repeat_button)
|
||||
ImageButton mPlayerRepeatButton;
|
||||
|
||||
@BindView(R.id.player_shuffle_button)
|
||||
ImageButton mPlayerShuffleButton;
|
||||
|
||||
@BindView(R.id.player_play_pause_button)
|
||||
ImageView mPlayerPlayPauseFab;
|
||||
Unbinder unbinder;
|
||||
ImageView playPauseFab;
|
||||
|
||||
@BindView(R.id.player_progress_slider)
|
||||
SeekBar progressSlider;
|
||||
|
||||
@BindView(R.id.volume_fragment_container)
|
||||
View mVolumeContainer;
|
||||
|
||||
Unbinder unbinder;
|
||||
private int lastPlaybackControlsColor;
|
||||
private int lastDisabledPlaybackControlsColor;
|
||||
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
|
||||
|
@ -84,7 +94,7 @@ public class FlatPlaybackControlsFragment extends AbsMusicServiceFragment implem
|
|||
super.onViewCreated(view, savedInstanceState);
|
||||
setUpMusicControllers();
|
||||
|
||||
mVolumeContainer.setVisibility(PreferenceUtil.getInstance(getContext()).getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
mVolumeContainer.setVisibility(PreferenceUtil.getInstance().getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -114,7 +124,7 @@ public class FlatPlaybackControlsFragment extends AbsMusicServiceFragment implem
|
|||
|
||||
|
||||
public void show() {
|
||||
mPlayerPlayPauseFab.animate()
|
||||
playPauseFab.animate()
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.setInterpolator(new DecelerateInterpolator())
|
||||
|
@ -123,10 +133,10 @@ public class FlatPlaybackControlsFragment extends AbsMusicServiceFragment implem
|
|||
|
||||
|
||||
public void hide() {
|
||||
if (mPlayerPlayPauseFab != null) {
|
||||
mPlayerPlayPauseFab.setScaleX(0f);
|
||||
mPlayerPlayPauseFab.setScaleY(0f);
|
||||
mPlayerPlayPauseFab.setRotation(0f);
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setScaleX(0f);
|
||||
playPauseFab.setScaleY(0f);
|
||||
playPauseFab.setRotation(0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -141,7 +151,7 @@ public class FlatPlaybackControlsFragment extends AbsMusicServiceFragment implem
|
|||
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(getActivity(), false);
|
||||
}
|
||||
int accentColor = ThemeStore.accentColor(getContext());
|
||||
boolean b = PreferenceUtil.getInstance(getContext()).getAdaptiveColor();
|
||||
boolean b = PreferenceUtil.getInstance().getAdaptiveColor();
|
||||
updateTextColors(b ? dark : accentColor);
|
||||
setProgressBarColor(b ? dark : accentColor);
|
||||
|
||||
|
@ -163,8 +173,8 @@ public class FlatPlaybackControlsFragment extends AbsMusicServiceFragment implem
|
|||
int colorPrimary = MaterialValueHelper.getPrimaryTextColor(getContext(), isDark);
|
||||
int colorSecondary = MaterialValueHelper.getSecondaryTextColor(getContext(), ColorUtil.isColorLight(darkColor));
|
||||
|
||||
TintHelper.setTintAuto(mPlayerPlayPauseFab, colorPrimary, false);
|
||||
TintHelper.setTintAuto(mPlayerPlayPauseFab, color, true);
|
||||
TintHelper.setTintAuto(playPauseFab, colorPrimary, false);
|
||||
TintHelper.setTintAuto(playPauseFab, color, true);
|
||||
|
||||
mTitle.setBackgroundColor(color);
|
||||
mTitle.setTextColor(colorPrimary);
|
||||
|
@ -180,7 +190,7 @@ public class FlatPlaybackControlsFragment extends AbsMusicServiceFragment implem
|
|||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
updateSong();
|
||||
|
@ -194,30 +204,19 @@ public class FlatPlaybackControlsFragment extends AbsMusicServiceFragment implem
|
|||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState(true);
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playerFabPlayPauseDrawable.setPause(animate);
|
||||
} else {
|
||||
playerFabPlayPauseDrawable.setPlay(animate);
|
||||
}
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
private void setUpPlayPauseFab() {
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
}
|
||||
|
||||
mPlayerPlayPauseFab.setImageDrawable(
|
||||
playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
//playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
mPlayerPlayPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
mPlayerPlayPauseFab.post(() -> {
|
||||
if (mPlayerPlayPauseFab != null) {
|
||||
mPlayerPlayPauseFab.setPivotX(mPlayerPlayPauseFab.getWidth() / 2);
|
||||
mPlayerPlayPauseFab.setPivotY(mPlayerPlayPauseFab.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpMusicControllers() {
|
||||
|
|
|
@ -4,14 +4,14 @@ import android.animation.ArgbEvaluator;
|
|||
import android.animation.ValueAnimator;
|
||||
import android.graphics.drawable.GradientDrawable;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
@ -52,7 +52,9 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements
|
|||
|
||||
PlayerAlbumCoverFragment playerAlbumCoverFragment = (PlayerAlbumCoverFragment)
|
||||
getChildFragmentManager().findFragmentById(R.id.player_album_cover_fragment);
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
if (playerAlbumCoverFragment != null) {
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpPlayerToolbar() {
|
||||
|
@ -86,6 +88,11 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_flat_player, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
//getPlayerActivity().setNavigationbarColorAuto();
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -126,7 +133,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements
|
|||
@Override
|
||||
public int toolbarIconColor() {
|
||||
boolean isLight = ColorUtil.isColorLight(lastColor);
|
||||
return PreferenceUtil.getInstance(getContext()).getAdaptiveColor() ?
|
||||
return PreferenceUtil.getInstance().getAdaptiveColor() ?
|
||||
MaterialValueHelper.getPrimaryTextColor(getContext(), isLight) :
|
||||
ATHUtil.resolveColor(getContext(), R.attr.iconColor);
|
||||
}
|
||||
|
@ -140,11 +147,11 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements
|
|||
boolean isLight = ColorUtil.isColorLight(color);
|
||||
|
||||
//TransitionManager.beginDelayedTransition(mToolbar);
|
||||
int iconColor = PreferenceUtil.getInstance(getContext()).getAdaptiveColor() ?
|
||||
int iconColor = PreferenceUtil.getInstance().getAdaptiveColor() ?
|
||||
MaterialValueHelper.getPrimaryTextColor(getContext(), isLight) :
|
||||
ATHUtil.resolveColor(getContext(), R.attr.iconColor);
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar, iconColor, getActivity());
|
||||
if (PreferenceUtil.getInstance(getContext()).getAdaptiveColor()) {
|
||||
if (PreferenceUtil.getInstance().getAdaptiveColor()) {
|
||||
colorize(color);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -102,12 +102,12 @@ public class FullPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
setUpMusicControllers();
|
||||
|
||||
mVolumeContainer.setVisibility(PreferenceUtil.getInstance(getContext()).getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
mVolumeContainer.setVisibility(PreferenceUtil.getInstance().getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
VolumeFragment volumeFragment = (VolumeFragment) getChildFragmentManager().findFragmentById(R.id.volume_fragment);
|
||||
volumeFragment.tintWhiteColor();
|
||||
|
||||
|
@ -160,7 +160,7 @@ public class FullPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
lastPlaybackControlsColor = Color.WHITE;
|
||||
lastDisabledPlaybackControlsColor = ContextCompat.getColor(getContext(), R.color.md_grey_500);
|
||||
|
||||
if (PreferenceUtil.getInstance(getContext()).getAdaptiveColor()) {
|
||||
if (PreferenceUtil.getInstance().getAdaptiveColor()) {
|
||||
setProgressBarColor(dark);
|
||||
} else {
|
||||
int accentColor = ThemeStore.accentColor(getContext());
|
||||
|
|
|
@ -42,6 +42,11 @@ public class FullPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_full, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
getPlayerActivity().setNavigationbarColor(Color.TRANSPARENT);
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -59,8 +64,11 @@ public class FullPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
|
||||
PlayerAlbumCoverFragment playerAlbumCoverFragment = (PlayerAlbumCoverFragment)
|
||||
getChildFragmentManager().findFragmentById(R.id.player_album_cover_fragment);
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
playerAlbumCoverFragment.removeSlideEffect();
|
||||
if (playerAlbumCoverFragment != null) {
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
playerAlbumCoverFragment.removeSlideEffect();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -57,7 +57,7 @@ public class HmmPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setUpMusicControllers();
|
||||
}
|
||||
|
|
|
@ -2,10 +2,8 @@ package code.name.monkey.retromusic.ui.fragments.player.hmm;
|
|||
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -15,6 +13,9 @@ import android.widget.TextView;
|
|||
|
||||
import com.afollestad.materialdialogs.internal.MDTintHelper;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
@ -98,6 +99,11 @@ public class HmmPlayerFragment extends AbsPlayerFragment implements
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_hmm_player, container, false);
|
||||
unBinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
getPlayerActivity().setNavigationbarColor(Color.TRANSPARENT);
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -197,7 +203,7 @@ public class HmmPlayerFragment extends AbsPlayerFragment implements
|
|||
|
||||
@Override
|
||||
public void onColorChanged(int color) {
|
||||
lastColor = PreferenceUtil.getInstance(getContext()).getAdaptiveColor() ? color :
|
||||
lastColor = PreferenceUtil.getInstance().getAdaptiveColor() ? color :
|
||||
ThemeStore.accentColor(getContext());
|
||||
getCallbacks().onPaletteColorChanged();
|
||||
hmmPlaybackControlsFragment.setDark(lastColor);
|
||||
|
|
|
@ -93,7 +93,7 @@ public class LockScreenPlayerControlsFragment extends AbsPlayerControlsFragment
|
|||
setUpMusicControllers();
|
||||
|
||||
//noinspection ConstantConditions
|
||||
volumeContainer.setVisibility(PreferenceUtil.getInstance(getContext()).getVolumeToggle()
|
||||
volumeContainer.setVisibility(PreferenceUtil.getInstance().getVolumeToggle()
|
||||
? View.VISIBLE : View.GONE);
|
||||
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ public class MaterialControlsFragment extends AbsPlayerControlsFragment {
|
|||
unbinder = ButterKnife.bind(this, view);
|
||||
setUpMusicControllers();
|
||||
|
||||
if (PreferenceUtil.getInstance(getContext()).getVolumeToggle()) {
|
||||
if (PreferenceUtil.getInstance().getVolumeToggle()) {
|
||||
mVolumeContainer.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mVolumeContainer.setVisibility(View.GONE);
|
||||
|
@ -169,7 +169,7 @@ public class MaterialControlsFragment extends AbsPlayerControlsFragment {
|
|||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
|
||||
if (PreferenceUtil.getInstance(getContext()).getAdaptiveColor()) {
|
||||
if (PreferenceUtil.getInstance().getAdaptiveColor()) {
|
||||
lastPlaybackControlsColor = dark;
|
||||
text.setTextColor(dark);
|
||||
}
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.player.material;
|
||||
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
@ -108,6 +108,11 @@ public class MaterialFragment extends AbsPlayerFragment implements PlayerAlbumCo
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_material, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
getPlayerActivity().setNavigationbarColorAuto();
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,18 +4,19 @@ import android.animation.ArgbEvaluator;
|
|||
import android.animation.ValueAnimator;
|
||||
import android.graphics.drawable.GradientDrawable;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil;
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil;
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
|
@ -102,10 +103,9 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
lastColor = color;
|
||||
getCallbacks().onPaletteColorChanged();
|
||||
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar,
|
||||
ATHUtil.resolveColor(getContext(), R.attr.iconColor), getActivity());
|
||||
ToolbarContentTintHelper.colorizeToolbar(toolbar, ATHUtil.resolveColor(getContext(), R.attr.iconColor), getActivity());
|
||||
|
||||
if (PreferenceUtil.getInstance(getContext()).getAdaptiveColor()) {
|
||||
if (PreferenceUtil.getInstance().getAdaptiveColor()) {
|
||||
colorize(color);
|
||||
}
|
||||
}
|
||||
|
@ -136,6 +136,11 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_player, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
//getPlayerActivity().setNavigationbarColorAuto();
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -153,7 +158,9 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
PlayerAlbumCoverFragment playerAlbumCoverFragment =
|
||||
(PlayerAlbumCoverFragment) getChildFragmentManager()
|
||||
.findFragmentById(R.id.player_album_cover_fragment);
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
if (playerAlbumCoverFragment != null) {
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpPlayerToolbar() {
|
||||
|
|
|
@ -5,10 +5,6 @@ import android.graphics.PorterDuff;
|
|||
import android.graphics.drawable.ClipDrawable;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -19,6 +15,10 @@ import android.widget.ImageButton;
|
|||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatSeekBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
|
@ -31,13 +31,13 @@ import code.name.monkey.appthemehelper.util.TintHelper;
|
|||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper;
|
||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler;
|
||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.service.MusicService;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment;
|
||||
import code.name.monkey.retromusic.util.MusicUtil;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import code.name.monkey.retromusic.views.PlayPauseDrawable;
|
||||
|
||||
public class PlayerPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
||||
|
||||
|
@ -75,7 +75,6 @@ public class PlayerPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
View mVolumeContainer;
|
||||
|
||||
private Unbinder unbinder;
|
||||
private PlayPauseDrawable playerFabPlayPauseDrawable;
|
||||
private int lastPlaybackControlsColor;
|
||||
private int lastDisabledPlaybackControlsColor;
|
||||
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
|
||||
|
@ -100,7 +99,7 @@ public class PlayerPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
unbinder = ButterKnife.bind(this, view);
|
||||
setUpMusicControllers();
|
||||
|
||||
if (PreferenceUtil.getInstance(getContext()).getVolumeToggle()) {
|
||||
if (PreferenceUtil.getInstance().getVolumeToggle()) {
|
||||
mVolumeContainer.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mVolumeContainer.setVisibility(View.GONE);
|
||||
|
@ -133,7 +132,7 @@ public class PlayerPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
updateSong();
|
||||
|
@ -147,7 +146,7 @@ public class PlayerPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState(true);
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -171,7 +170,7 @@ public class PlayerPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(getActivity(), false);
|
||||
}
|
||||
|
||||
if (PreferenceUtil.getInstance(getContext()).getAdaptiveColor()) {
|
||||
if (PreferenceUtil.getInstance().getAdaptiveColor()) {
|
||||
setFabColor(dark);
|
||||
} else {
|
||||
setFabColor(ThemeStore.accentColor(getContext()));
|
||||
|
@ -188,32 +187,21 @@ public class PlayerPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
setProgressBarColor(i);
|
||||
}
|
||||
|
||||
public void setProgressBarColor(int newColor) {
|
||||
private void setProgressBarColor(int newColor) {
|
||||
LayerDrawable ld = (LayerDrawable) progressSlider.getProgressDrawable();
|
||||
ClipDrawable clipDrawable = (ClipDrawable) ld.findDrawableByLayerId(android.R.id.progress);
|
||||
clipDrawable.setColorFilter(newColor, PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
|
||||
private void setUpPlayPauseFab() {
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
|
||||
playPauseFab.setImageDrawable(
|
||||
playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
//playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
//playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseFab.post(() -> {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playerFabPlayPauseDrawable.setPause(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playerFabPlayPauseDrawable.setPlay(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import code.name.monkey.appthemehelper.util.TintHelper;
|
|||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper;
|
||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler;
|
||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener;
|
||||
import code.name.monkey.retromusic.service.MusicService;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment;
|
||||
|
@ -75,7 +76,7 @@ public class PlainPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState(true);
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -90,7 +91,7 @@ public class PlainPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
}
|
||||
|
@ -130,10 +131,10 @@ public class PlainPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setUpMusicControllers();
|
||||
if (PreferenceUtil.getInstance(getContext()).getVolumeToggle()) {
|
||||
if (PreferenceUtil.getInstance().getVolumeToggle()) {
|
||||
volumeContainer.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
volumeContainer.setVisibility(View.GONE);
|
||||
|
@ -293,7 +294,7 @@ public class PlainPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
MaterialValueHelper.getPrimaryDisabledTextColor(getActivity(), false);
|
||||
}
|
||||
|
||||
int finalColor = PreferenceUtil.getInstance(getContext()).getAdaptiveColor() ? dark : ThemeStore.accentColor(getContext());
|
||||
int finalColor = PreferenceUtil.getInstance().getAdaptiveColor() ? dark : ThemeStore.accentColor(getContext());
|
||||
|
||||
|
||||
setProgressBarColor(finalColor);
|
||||
|
@ -310,24 +311,14 @@ public class PlainPlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
}
|
||||
|
||||
private void setUpPlayPauseFab() {
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
|
||||
playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
//playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
//playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseFab.post(() -> {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playerFabPlayPauseDrawable.setPause(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playerFabPlayPauseDrawable.setPlay(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.player.plain;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
@ -74,6 +75,11 @@ public class PlainPlayerFragment extends AbsPlayerFragment implements
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_plain_player, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
getPlayerActivity().setNavigationbarColorAuto();
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@ package code.name.monkey.retromusic.ui.fragments.player.simple;
|
|||
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -12,6 +10,8 @@ import android.view.animation.DecelerateInterpolator;
|
|||
import android.widget.ImageButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
|
@ -24,6 +24,7 @@ import code.name.monkey.appthemehelper.util.TintHelper;
|
|||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
|
||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper;
|
||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.service.MusicService;
|
||||
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment;
|
||||
|
@ -39,20 +40,28 @@ public class SimplePlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@BindView(R.id.player_play_pause_button)
|
||||
ImageButton playPauseFab;
|
||||
|
||||
@BindView(R.id.player_prev_button)
|
||||
ImageButton prevButton;
|
||||
|
||||
@BindView(R.id.player_next_button)
|
||||
ImageButton nextButton;
|
||||
|
||||
@BindView(R.id.player_repeat_button)
|
||||
ImageButton repeatButton;
|
||||
|
||||
@BindView(R.id.player_shuffle_button)
|
||||
ImageButton shuffleButton;
|
||||
|
||||
@BindView(R.id.player_song_current_progress)
|
||||
TextView songCurrentProgress;
|
||||
|
||||
@BindView(R.id.volume_fragment_container)
|
||||
View volumeContainer;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
@BindView(R.id.text)
|
||||
TextView text;
|
||||
private Unbinder unbinder;
|
||||
|
@ -64,7 +73,7 @@ public class SimplePlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
updatePlayPauseDrawableState(true);
|
||||
updatePlayPauseDrawableState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -79,7 +88,7 @@ public class SimplePlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updatePlayPauseDrawableState();
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
updateSong();
|
||||
|
@ -119,11 +128,11 @@ public class SimplePlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setUpMusicControllers();
|
||||
volumeContainer.setVisibility(
|
||||
PreferenceUtil.getInstance(getContext()).getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
PreferenceUtil.getInstance().getVolumeToggle() ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
private void setUpMusicControllers() {
|
||||
|
@ -277,47 +286,27 @@ public class SimplePlaybackControlsFragment extends AbsPlayerControlsFragment {
|
|||
.getPrimaryDisabledTextColor(getActivity(), false);
|
||||
}
|
||||
|
||||
if (PreferenceUtil.getInstance(getContext()).getAdaptiveColor()) {
|
||||
TintHelper.setTintAuto(playPauseFab,
|
||||
MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(dark)),
|
||||
false);
|
||||
TintHelper.setTintAuto(playPauseFab, dark, true);
|
||||
text.setTextColor(dark);
|
||||
} else {
|
||||
int accentColor = ThemeStore.accentColor(getContext());
|
||||
text.setTextColor(accentColor);
|
||||
TintHelper.setTintAuto(playPauseFab,
|
||||
MaterialValueHelper
|
||||
.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(accentColor)),
|
||||
false);
|
||||
TintHelper.setTintAuto(playPauseFab, accentColor, true);
|
||||
}
|
||||
int finalColor = PreferenceUtil.getInstance().getAdaptiveColor() ? dark : ThemeStore.accentColor(getContext());
|
||||
text.setTextColor(finalColor);
|
||||
TintHelper.setTintAuto(playPauseFab, MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(finalColor)), false);
|
||||
TintHelper.setTintAuto(playPauseFab, finalColor, true);
|
||||
|
||||
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
updatePrevNextColor();
|
||||
}
|
||||
|
||||
private void setUpPlayPauseFab() {
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
|
||||
playPauseFab.setImageDrawable(
|
||||
playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
//playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
//playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseFab.post(() -> {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
private void setUpPlayPauseFab() {
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
protected void updatePlayPauseDrawableState() {
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playerFabPlayPauseDrawable.setPause(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
} else {
|
||||
playerFabPlayPauseDrawable.setPlay(animate);
|
||||
playPauseFab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.player.simple;
|
||||
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
@ -46,6 +46,11 @@ public class SimplePlayerFragment extends AbsPlayerFragment implements
|
|||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_simple_player, container, false);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
if (getPlayerActivity() != null) {
|
||||
getPlayerActivity().setDrawUnderNavigationBar();
|
||||
getPlayerActivity().setNavigationbarColorAuto();
|
||||
addSafeArea(view);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ public class AudioSettings extends AbsSettingsFragment {
|
|||
@Override
|
||||
public void invalidateSettings() {
|
||||
Preference findPreference = findPreference("equalizer");
|
||||
if (!hasEqualizer() && !PreferenceUtil.getInstance(getContext()).getSelectedEqualizer().equals("retro")) {
|
||||
if (!hasEqualizer() && !PreferenceUtil.getInstance().getSelectedEqualizer().equals("retro")) {
|
||||
findPreference.setEnabled(false);
|
||||
findPreference.setSummary(getResources().getString(R.string.no_equalizer));
|
||||
} else {
|
||||
|
|
|
@ -74,7 +74,7 @@ public class MainSettingsFragment extends Fragment {
|
|||
|
||||
text.setTextColor(ThemeStore.textColorSecondary(getContext()));
|
||||
titleWelcome.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
titleWelcome.setText(String.format("%s %s!", getTimeOfTheDay(), PreferenceUtil.getInstance(getContext()).getUserName()));
|
||||
titleWelcome.setText(String.format("%s %s!", getTimeOfTheDay(), PreferenceUtil.getInstance().getUserName()));
|
||||
loadImageFromStorage();
|
||||
}
|
||||
|
||||
|
@ -151,7 +151,7 @@ public class MainSettingsFragment extends Fragment {
|
|||
.setQuality(75)
|
||||
.setCompressFormat(Bitmap.CompressFormat.WEBP)
|
||||
.compressToBitmapAsFlowable(
|
||||
new File(PreferenceUtil.getInstance(getContext()).getProfileImage(), USER_PROFILE))
|
||||
new File(PreferenceUtil.getInstance().getProfileImage(), USER_PROFILE))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(userImageBottom::setImageBitmap,
|
||||
|
|
|
@ -20,10 +20,10 @@ public class NotificationSettingsFragment extends AbsSettingsFragment {
|
|||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
||||
classicNotification.setVisible(false);
|
||||
} else {
|
||||
classicNotification.setChecked(PreferenceUtil.getInstance(getActivity()).classicNotification());
|
||||
classicNotification.setChecked(PreferenceUtil.getInstance().classicNotification());
|
||||
classicNotification.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
// Save preference
|
||||
PreferenceUtil.getInstance(getActivity()).setClassicNotification((Boolean) newValue);
|
||||
PreferenceUtil.getInstance().setClassicNotification((Boolean) newValue);
|
||||
|
||||
final MusicService service = MusicPlayerRemote.musicService;
|
||||
if (service != null) {
|
||||
|
|
|
@ -41,21 +41,21 @@ public class NowPlayingSettingsFragment extends AbsSettingsFragment implements
|
|||
|
||||
private void updateNowPlayingScreenSummary() {
|
||||
//noinspection ConstantConditions
|
||||
findPreference("now_playing_screen_id").setSummary(PreferenceUtil.getInstance(getActivity()).getNowPlayingScreen().titleRes);
|
||||
findPreference("now_playing_screen_id").setSummary(PreferenceUtil.getInstance().getNowPlayingScreen().titleRes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
//noinspection ConstantConditions
|
||||
PreferenceUtil.getInstance(getContext()).registerOnSharedPreferenceChangedListener(this);
|
||||
PreferenceUtil.getInstance().registerOnSharedPreferenceChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
//noinspection ConstantConditions
|
||||
PreferenceUtil.getInstance(getContext()).unregisterOnSharedPreferenceChangedListener(this);
|
||||
PreferenceUtil.getInstance().unregisterOnSharedPreferenceChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -75,6 +75,6 @@ public class NowPlayingSettingsFragment extends AbsSettingsFragment implements
|
|||
}
|
||||
|
||||
private void updateAlbumCoverStyleSummary() {
|
||||
findPreference("album_cover_style_id").setSummary(PreferenceUtil.getInstance(getActivity()).getAlbumCoverStyle().titleRes);
|
||||
findPreference("album_cover_style_id").setSummary(PreferenceUtil.getInstance().getAlbumCoverStyle().titleRes);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,14 +43,14 @@ public class PersonaizeSettingsFragment extends AbsSettingsFragment implements S
|
|||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
//noinspection ConstantConditions
|
||||
PreferenceUtil.getInstance(getContext()).registerOnSharedPreferenceChangedListener(this);
|
||||
PreferenceUtil.getInstance().registerOnSharedPreferenceChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
//noinspection ConstantConditions
|
||||
PreferenceUtil.getInstance(getContext()).unregisterOnSharedPreferenceChangedListener(this);
|
||||
PreferenceUtil.getInstance().unregisterOnSharedPreferenceChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -31,7 +31,7 @@ public class ThemeSettingsFragment extends AbsSettingsFragment {
|
|||
final ATEColorPreference primaryColorPref = (ATEColorPreference) findPreference(
|
||||
"primary_color");
|
||||
//noinspection ConstantConditions
|
||||
primaryColorPref.setVisible(PreferenceUtil.getInstance(getActivity()).getGeneralTheme() == R.style.Theme_RetroMusic_Color);
|
||||
primaryColorPref.setVisible(PreferenceUtil.getInstance().getGeneralTheme() == R.style.Theme_RetroMusic_Color);
|
||||
final int primaryColor = ThemeStore.primaryColor(getActivity());
|
||||
primaryColorPref.setColor(primaryColor, ColorUtil.darkenColor(primaryColor));
|
||||
primaryColorPref.setOnPreferenceClickListener(preference -> {
|
||||
|
@ -123,10 +123,10 @@ public class ThemeSettingsFragment extends AbsSettingsFragment {
|
|||
if (!VersionUtils.hasNougatMR()) {
|
||||
colorAppShortcuts.setVisible(false);
|
||||
} else {
|
||||
colorAppShortcuts.setChecked(PreferenceUtil.getInstance(getActivity()).coloredAppShortcuts());
|
||||
colorAppShortcuts.setChecked(PreferenceUtil.getInstance().coloredAppShortcuts());
|
||||
colorAppShortcuts.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
// Save preference
|
||||
PreferenceUtil.getInstance(getActivity()).setColoredAppShortcuts((Boolean) newValue);
|
||||
PreferenceUtil.getInstance().setColoredAppShortcuts((Boolean) newValue);
|
||||
// Update app shortcuts
|
||||
new DynamicShortcutManager(getActivity()).updateDynamicShortcuts();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue