code refactor

This commit is contained in:
h4h13 2018-08-01 12:21:27 +05:30
parent 918cfc177b
commit efe607816f
68 changed files with 2236 additions and 2316 deletions

View file

@ -108,7 +108,7 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
@Override
protected void onCreate(Bundle savedInstanceState) {
setDrawUnderStatusbar(true);
setDrawUnderStatusBar(true);
super.onCreate(savedInstanceState);
ButterKnife.bind(this);

View file

@ -118,7 +118,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
@Override
protected void onCreate(Bundle bundle) {
setDrawUnderStatusbar(true);
setDrawUnderStatusBar(true);
super.onCreate(bundle);
ButterKnife.bind(this);

View file

@ -88,7 +88,7 @@ public class GenreDetailsActivity extends AbsSlidingMusicPanelActivity implement
@Override
protected void onCreate(Bundle savedInstanceState) {
setDrawUnderStatusbar(true);
setDrawUnderStatusBar(true);
super.onCreate(savedInstanceState);
ButterKnife.bind(this);

View file

@ -30,7 +30,7 @@ public class LockScreenActivity extends AbsMusicServiceActivity {
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
setDrawUnderStatusbar(true);
setDrawUnderStatusBar(true);
setContentView(R.layout.activity_lock_screen_old_style);
hideStatusBar();

View file

@ -88,7 +88,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity implements
@Override
protected void onCreate(Bundle savedInstanceState) {
setDrawUnderStatusbar(true);
setDrawUnderStatusBar(true);
super.onCreate(savedInstanceState);
ButterKnife.bind(this);

View file

@ -87,7 +87,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
@Override
protected void onCreate(Bundle savedInstanceState) {
setDrawUnderStatusbar(true);
setDrawUnderStatusBar(true);
super.onCreate(savedInstanceState);
ButterKnife.bind(this);

View file

@ -53,7 +53,7 @@ public class ProVersionActivity extends AbsBaseActivity implements
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pro_version);
setDrawUnderStatusbar(true);
setDrawUnderStatusBar(true);
ButterKnife.bind(this);
RetroUtil.statusBarHeight(statusBar);
setStatusbarColorAuto();

View file

@ -68,7 +68,7 @@ public class SearchActivity extends AbsMusicServiceActivity implements OnQueryTe
@Override
protected void onCreate(Bundle savedInstanceState) {
setDrawUnderStatusbar(true);
setDrawUnderStatusBar(true);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);

View file

@ -12,7 +12,7 @@ public class UserInfoActivity extends AbsBaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setDrawUnderStatusbar(true);
setDrawUnderStatusBar(true);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_info);

View file

@ -1,21 +1,22 @@
package code.name.monkey.retromusic.ui.activities.base;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.ColorInt;
import android.support.v4.content.ContextCompat;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import code.name.monkey.appthemehelper.ATH;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.appthemehelper.common.ATHToolbarActivity;
import code.name.monkey.appthemehelper.util.ATHUtil;
import code.name.monkey.appthemehelper.util.ColorUtil;
import code.name.monkey.appthemehelper.util.MaterialDialogsUtil;
import code.name.monkey.appthemehelper.util.TintHelper;
import code.name.monkey.appthemehelper.util.VersionUtils;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.util.PreferenceUtil;
@ -23,191 +24,190 @@ import code.name.monkey.retromusic.util.RetroUtil;
public abstract class AbsThemeActivity extends ATHToolbarActivity implements Runnable {
private Handler handler = new Handler();
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(PreferenceUtil.getInstance(this).getGeneralTheme());
hideStatusBar();
super.onCreate(savedInstanceState);
MaterialDialogsUtil.updateMaterialDialogsThemeSingleton(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(PreferenceUtil.getInstance(this).getGeneralTheme());
hideStatusBar();
super.onCreate(savedInstanceState);
MaterialDialogsUtil.updateMaterialDialogsThemeSingleton(this);
changeBackgroundShape();
setImmersiveFullscreen();
registerSystemUiVisibility();
toggleScreenOn();
changeBackgroundShape();
setImmersiveFullscreen();
registerSystemUiVisibility();
toggleScreenOn();
}
private void toggleScreenOn() {
if (PreferenceUtil.getInstance(this).isScreenOnEnabled()) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
private void toggleScreenOn() {
if (PreferenceUtil.getInstance(this).isScreenOnEnabled()) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
hideStatusBar();
handler.removeCallbacks(this);
handler.postDelayed(this, 300);
} else {
handler.removeCallbacks(this);
}
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
hideStatusBar();
handler.removeCallbacks(this);
handler.postDelayed(this, 300);
} else {
handler.removeCallbacks(this);
}
public void hideStatusBar() {
hideStatusBar(PreferenceUtil.getInstance(this).getFullScreenMode());
}
private void hideStatusBar(boolean fullscreen) {
final View statusBar = getWindow().getDecorView().getRootView().findViewById(R.id.status_bar);
if (statusBar != null) {
statusBar.setVisibility(fullscreen ? View.GONE : View.VISIBLE);
}
}
public void hideStatusBar() {
hideStatusBar(PreferenceUtil.getInstance(this).getFullScreenMode());
private void changeBackgroundShape() {
Drawable background = PreferenceUtil.getInstance(this).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);
//View decor = getWindow().getDecorView();
//GradientDrawable gradientDrawable = (GradientDrawable) decor.getBackground();
//gradientDrawable.setColor(ThemeStore.primaryColor(this));
}
protected void setDrawUnderStatusBar(boolean drawUnderStatusbar) {
if (VersionUtils.hasLollipop()) {
RetroUtil.setAllowDrawUnderStatusBar(getWindow());
} else if (VersionUtils.hasKitKat()) {
RetroUtil.setStatusBarTranslucent(getWindow());
}
}
private void hideStatusBar(boolean fullscreen) {
final View statusBar = getWindow().getDecorView().getRootView().findViewById(R.id.status_bar);
if (statusBar != null) {
statusBar.setVisibility(fullscreen ? View.GONE : View.VISIBLE);
}
}
private void changeBackgroundShape() {
if (PreferenceUtil.getInstance(this).isRoundCorners()) {
getWindow().setBackgroundDrawableResource(R.drawable.round_window);
} else {
getWindow().setBackgroundDrawableResource(R.drawable.square_window);
}
View decor = getWindow().getDecorView();
GradientDrawable gradientDrawable = (GradientDrawable) decor.getBackground();
gradientDrawable.setColor(ThemeStore.primaryColor(this));
}
protected void setDrawUnderStatusbar(boolean drawUnderStatusbar) {
/**
* 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.
*
* @param color the new statusbar color (will be shifted down on Lollipop and above)
*/
public void setStatusbarColor(int color) {
if (VersionUtils.hasKitKat()) {
final View statusBar = getWindow().getDecorView().getRootView().findViewById(R.id.status_bar);
if (statusBar != null) {
if (VersionUtils.hasLollipop()) {
RetroUtil.setAllowDrawUnderStatusBar(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.
*
* @param color the new statusbar color (will be shifted down on Lollipop and above)
*/
public void setStatusbarColor(int color) {
if (VersionUtils.hasKitKat()) {
final View statusBar = getWindow().getDecorView().getRootView().findViewById(R.id.status_bar);
if (statusBar != null) {
if (VersionUtils.hasLollipop()) {
statusBar.setBackgroundColor(ColorUtil.darkenColor(color));
setLightStatusbarAuto(color);
} else {
statusBar.setBackgroundColor(color);
}
} else if (Build.VERSION.SDK_INT >= 21) {
getWindow().setStatusBarColor(ColorUtil.darkenColor(color));
setLightStatusbarAuto(color);
}
}
}
public void setStatusbarColorAuto() {
// we don't want to use statusbar color because we are doing the color darkening on our own to support KitKat
setStatusbarColor(ThemeStore.primaryColor(this));
}
public void setTaskDescriptionColor(@ColorInt int color) {
ATH.setTaskDescriptionColor(this, color);
}
public void setTaskDescriptionColorAuto() {
setTaskDescriptionColor(ThemeStore.primaryColor(this));
}
public void setNavigationbarColor(int color) {
if (ThemeStore.coloredNavigationBar(this)) {
ATH.setNavigationbarColor(this, color);
statusBar.setBackgroundColor(ColorUtil.darkenColor(color));
setLightStatusbarAuto(color);
} else {
ATH.setNavigationbarColor(this, Color.BLACK);
statusBar.setBackgroundColor(color);
}
} else if (Build.VERSION.SDK_INT >= 21) {
getWindow().setStatusBarColor(ColorUtil.darkenColor(color));
setLightStatusbarAuto(color);
}
}
}
public void setNavigationbarColorAuto() {
setNavigationbarColor(ThemeStore.navigationBarColor(this));
public void setStatusbarColorAuto() {
// we don't want to use statusbar color because we are doing the color darkening on our own to support KitKat
setStatusbarColor(ThemeStore.primaryColor(this));
}
public void setTaskDescriptionColor(@ColorInt int color) {
ATH.setTaskDescriptionColor(this, color);
}
public void setTaskDescriptionColorAuto() {
setTaskDescriptionColor(ThemeStore.primaryColor(this));
}
public void setNavigationbarColor(int color) {
if (ThemeStore.coloredNavigationBar(this)) {
ATH.setNavigationbarColor(this, color);
} else {
ATH.setNavigationbarColor(this, Color.BLACK);
}
}
public void setLightStatusbar(boolean enabled) {
ATH.setLightStatusbar(this, enabled);
public void setNavigationbarColorAuto() {
setNavigationbarColor(ThemeStore.navigationBarColor(this));
}
public void setLightStatusbar(boolean enabled) {
ATH.setLightStatusbar(this, enabled);
}
public void setLightStatusbarAuto(int bgColor) {
setLightStatusbar(ColorUtil.isColorLight(bgColor));
}
public void setLightNavigationBar(boolean enabled) {
if (!ATHUtil.isWindowBackgroundDark(this) && ThemeStore.coloredNavigationBar(this)) {
ATH.setLightNavigationbar(this, enabled);
}
}
public void setLightStatusbarAuto(int bgColor) {
setLightStatusbar(ColorUtil.isColorLight(bgColor));
}
public void setLightNavigationBar(boolean enabled) {
if (!ATHUtil.isWindowBackgroundDark(this) && ThemeStore.coloredNavigationBar(this)) {
ATH.setLightNavigationbar(this, enabled);
}
}
private void registerSystemUiVisibility() {
final View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(visibility -> {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
setImmersiveFullscreen();
}
});
}
private void unregisterSystemUiVisibility() {
final View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(null);
}
public void setImmersiveFullscreen() {
int flags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
if (PreferenceUtil.getInstance(this).getFullScreenMode()) {
getWindow().getDecorView().setSystemUiVisibility(flags);
}
}
public void exitFullscreen() {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
@Override
public void run() {
private void registerSystemUiVisibility() {
final View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(visibility -> {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
setImmersiveFullscreen();
}
});
}
private void unregisterSystemUiVisibility() {
final View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(null);
}
public void setImmersiveFullscreen() {
int flags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
if (PreferenceUtil.getInstance(this).getFullScreenMode()) {
getWindow().getDecorView().setSystemUiVisibility(flags);
}
}
@Override
protected void onStop() {
handler.removeCallbacks(this);
super.onStop();
public void exitFullscreen() {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
@Override
public void run() {
setImmersiveFullscreen();
}
@Override
protected void onStop() {
handler.removeCallbacks(this);
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterSystemUiVisibility();
exitFullscreen();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP)) {
handler.removeCallbacks(this);
handler.postDelayed(this, 500);
}
return super.onKeyDown(keyCode, event);
@Override
public void onDestroy() {
super.onDestroy();
unregisterSystemUiVisibility();
exitFullscreen();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP)) {
handler.removeCallbacks(this);
handler.postDelayed(this, 500);
}
return super.onKeyDown(keyCode, event);
}
}
}

View file

@ -16,7 +16,6 @@ import android.view.ViewGroup;
import android.view.animation.DecelerateInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
@ -31,146 +30,147 @@ import code.name.monkey.retromusic.views.PlayPauseDrawable;
import me.zhanghai.android.materialprogressbar.MaterialProgressBar;
public class MiniPlayerFragment extends AbsMusicServiceFragment implements
MusicProgressViewUpdateHelper.Callback {
MusicProgressViewUpdateHelper.Callback {
@BindView(R.id.mini_player_title)
TextView miniPlayerTitle;
@BindView(R.id.mini_player_play_pause_button)
ImageView miniPlayerPlayPauseButton;
@BindView(R.id.progress_bar)
MaterialProgressBar progressBar;
@BindView(R.id.mini_player_title)
TextView miniPlayerTitle;
@BindView(R.id.mini_player_play_pause_button)
ImageView miniPlayerPlayPauseButton;
@BindView(R.id.progress_bar)
MaterialProgressBar progressBar;
private Unbinder unbinder;
private PlayPauseDrawable miniPlayerPlayPauseDrawable;
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
private Unbinder unbinder;
private PlayPauseDrawable miniPlayerPlayPauseDrawable;
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
progressViewUpdateHelper = new MusicProgressViewUpdateHelper(this);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.fragment_mini_player, container, false);
unbinder = ButterKnife.bind(this, layout);
return layout;
}
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//noinspection ConstantConditions
view.setBackgroundColor(ThemeStore.primaryColor(getContext()));
view.setOnTouchListener(new FlingPlayBackController(getActivity()));
setUpMiniPlayer();
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@SuppressWarnings({"ConstantConditions"})
private void setUpMiniPlayer() {
setUpPlayPauseButton();
progressBar.setProgressTintList(ColorStateList.valueOf(ThemeStore.accentColor(getActivity())));
}
private void setUpPlayPauseButton() {
//noinspection ConstantConditions
miniPlayerPlayPauseDrawable = new PlayPauseDrawable(getActivity());
miniPlayerPlayPauseButton.setImageDrawable(miniPlayerPlayPauseDrawable);
miniPlayerPlayPauseButton.setColorFilter(ATHUtil.resolveColor(getActivity(),
R.attr.iconColor,
ThemeStore.textColorSecondary(getActivity())), PorterDuff.Mode.SRC_IN);
miniPlayerPlayPauseButton.setOnClickListener(new PlayPauseButtonOnClickHandler());
}
private void updateSongTitle() {
miniPlayerTitle.setText(MusicPlayerRemote.getCurrentSong().title);
}
@Override
public void onServiceConnected() {
updateSongTitle();
updatePlayPauseDrawableState(false);
}
@Override
public void onPlayingMetaChanged() {
updateSongTitle();
}
@Override
public void onPlayStateChanged() {
updatePlayPauseDrawableState(true);
}
@Override
public void onUpdateProgressViews(int progress, int total) {
progressBar.setMax(total);
ObjectAnimator animator = ObjectAnimator.ofInt(progressBar, "progress", progress);
animator.setDuration(1000);
animator.setInterpolator(new DecelerateInterpolator());
animator.start();
}
@Override
public void onResume() {
super.onResume();
progressViewUpdateHelper.start();
}
@Override
public void onPause() {
super.onPause();
progressViewUpdateHelper.stop();
}
protected void updatePlayPauseDrawableState(boolean animate) {
if (MusicPlayerRemote.isPlaying()) {
miniPlayerPlayPauseDrawable.setPause(animate);
} else {
miniPlayerPlayPauseDrawable.setPlay(animate);
}
}
public void setColor(int playerFragmentColor) {
//noinspection ConstantConditions
getView().setBackgroundColor(playerFragmentColor);
}
public static class FlingPlayBackController implements View.OnTouchListener {
GestureDetector flingPlayBackController;
public FlingPlayBackController(Context context) {
flingPlayBackController = new GestureDetector(context,
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (Math.abs(velocityX) > Math.abs(velocityY)) {
if (velocityX < 0) {
MusicPlayerRemote.playNextSong();
return true;
} else if (velocityX > 0) {
MusicPlayerRemote.playPreviousSong();
return true;
}
}
return false;
}
});
}
@SuppressLint("ClickableViewAccessibility")
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
progressViewUpdateHelper = new MusicProgressViewUpdateHelper(this);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.fragment_mini_player, container, false);
unbinder = ButterKnife.bind(this, layout);
return layout;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
view.setBackgroundColor(ThemeStore.primaryColor(getContext()));
view.setOnTouchListener(new FlingPlayBackController(getActivity()));
setUpMiniPlayer();
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@SuppressWarnings({"ConstantConditions"})
private void setUpMiniPlayer() {
setUpPlayPauseButton();
progressBar.setProgressTintList(ColorStateList.valueOf(ThemeStore.accentColor(getActivity())));
}
private void setUpPlayPauseButton() {
//noinspection ConstantConditions
miniPlayerPlayPauseDrawable = new PlayPauseDrawable(getActivity());
miniPlayerPlayPauseButton.setImageDrawable(miniPlayerPlayPauseDrawable);
miniPlayerPlayPauseButton.setColorFilter(ATHUtil.resolveColor(getActivity(),
R.attr.iconColor,
ThemeStore.textColorSecondary(getActivity())), PorterDuff.Mode.SRC_IN);
miniPlayerPlayPauseButton.setOnClickListener(new PlayPauseButtonOnClickHandler());
}
private void updateSongTitle() {
miniPlayerTitle.setText(MusicPlayerRemote.getCurrentSong().title);
}
@Override
public void onServiceConnected() {
updateSongTitle();
updatePlayPauseDrawableState(false);
}
@Override
public void onPlayingMetaChanged() {
updateSongTitle();
}
@Override
public void onPlayStateChanged() {
updatePlayPauseDrawableState(true);
}
@Override
public void onUpdateProgressViews(int progress, int total) {
progressBar.setMax(total);
ObjectAnimator animator = ObjectAnimator.ofInt(progressBar, "progress", progress);
animator.setDuration(1000);
animator.setInterpolator(new DecelerateInterpolator());
animator.start();
}
@Override
public void onResume() {
super.onResume();
progressViewUpdateHelper.start();
}
@Override
public void onPause() {
super.onPause();
progressViewUpdateHelper.stop();
}
protected void updatePlayPauseDrawableState(boolean animate) {
if (MusicPlayerRemote.isPlaying()) {
miniPlayerPlayPauseDrawable.setPause(animate);
} else {
miniPlayerPlayPauseDrawable.setPlay(animate);
}
}
public void setColor(int playerFragmentColor) {
//noinspection ConstantConditions
getView().setBackgroundColor(playerFragmentColor);
}
public static class FlingPlayBackController implements View.OnTouchListener {
GestureDetector flingPlayBackController;
public FlingPlayBackController(Context context) {
flingPlayBackController = new GestureDetector(context,
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (Math.abs(velocityX) > Math.abs(velocityY)) {
if (velocityX < 0) {
MusicPlayerRemote.playNextSong();
return true;
} else if (velocityX > 0) {
MusicPlayerRemote.playPreviousSong();
return true;
}
}
return false;
}
});
}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
return flingPlayBackController.onTouchEvent(event);
}
public boolean onTouch(View v, MotionEvent event) {
return flingPlayBackController.onTouchEvent(event);
}
}
}

View file

@ -22,6 +22,7 @@ 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;
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget;
import code.name.monkey.retromusic.glide.SongGlideRequest;
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
@ -35,7 +36,6 @@ 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 jp.wasabeef.glide.transformations.BlurTransformation;
/**
* @author Hemanth S (h4h13).
@ -207,7 +207,7 @@ public class BlurPlayerFragment extends AbsPlayerFragment implements
}
int blurAmount = PreferenceManager.getDefaultSharedPreferences(getContext())
.getInt("blur_amount", 25);
.getInt("new_blur_amount", 25);
colorBackground.clearColorFilter();
@ -216,7 +216,7 @@ public class BlurPlayerFragment extends AbsPlayerFragment implements
.generatePalette(activity)
.build()
.override(320, 480)
.transform(new BlurTransformation(getActivity(), blurAmount))
.transform(new BlurTransformation.Builder(getActivity()).blurRadius(blurAmount).build())
.into(new RetroMusicColoredTarget(colorBackground) {
@Override
public void onColorReady(int color) {

View file

@ -9,19 +9,15 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.glide.BlurTransformation;
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget;
import code.name.monkey.retromusic.glide.SongGlideRequest;
import code.name.monkey.retromusic.helper.MusicPlayerRemote;
@ -29,164 +25,167 @@ 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;
import code.name.monkey.retromusic.ui.fragments.player.normal.PlayerFragment;
import jp.wasabeef.glide.transformations.BlurTransformation;
import com.bumptech.glide.Glide;
public class CardBlurFragment extends AbsPlayerFragment implements PlayerAlbumCoverFragment.Callbacks {
@BindView(R.id.player_toolbar)
Toolbar toolbar;
@BindView(R.id.status_bar)
View statusBar;
@BindView(R.id.gradient_background)
ImageView colorBackground;
public class CardBlurFragment extends AbsPlayerFragment implements
PlayerAlbumCoverFragment.Callbacks {
private int lastColor;
private CardBlurPlaybackControlsFragment playbackControlsFragment;
private Unbinder unbinder;
@BindView(R.id.player_toolbar)
Toolbar toolbar;
@BindView(R.id.status_bar)
View statusBar;
@BindView(R.id.gradient_background)
ImageView colorBackground;
public static PlayerFragment newInstance() {
Bundle args = new Bundle();
PlayerFragment fragment = new PlayerFragment();
fragment.setArguments(args);
return fragment;
private int lastColor;
private CardBlurPlaybackControlsFragment playbackControlsFragment;
private Unbinder unbinder;
public static PlayerFragment newInstance() {
Bundle args = new Bundle();
PlayerFragment fragment = new PlayerFragment();
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 void onResume() {
super.onResume();
}
@Override
public boolean onBackPressed() {
return false;
}
@Override
public Toolbar getToolbar() {
return toolbar;
}
@Override
public int toolbarIconColor() {
return Color.WHITE;
}
@Override
public void onColorChanged(int color) {
playbackControlsFragment.setDark(color);
lastColor = color;
getCallbacks().onPaletteColorChanged();
ToolbarContentTintHelper.colorizeToolbar(toolbar, Color.WHITE, getActivity());
}
@Override
protected void toggleFavorite(Song song) {
super.toggleFavorite(song);
if (song.id == MusicPlayerRemote.getCurrentSong().id) {
updateIsFavorite();
}
}
@Override
@ColorInt
public int getPaletteColor() {
return lastColor;
}
@Override
public void onFavoriteToggled() {
toggleFavorite(MusicPlayerRemote.getCurrentSong());
}
@Override
public void onShow() {
playbackControlsFragment.show();
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@Override
public void onHide() {
playbackControlsFragment.hide();
onBackPressed();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_card_blur_player, container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
toggleStatusBar(statusBar);
@Override
public boolean onBackPressed() {
return false;
}
setUpSubFragments();
setUpPlayerToolbar();
}
@Override
public Toolbar getToolbar() {
return toolbar;
}
private void setUpSubFragments() {
playbackControlsFragment = (CardBlurPlaybackControlsFragment) getChildFragmentManager()
.findFragmentById(R.id.playback_controls_fragment);
@Override
public int toolbarIconColor() {
return Color.WHITE;
}
PlayerAlbumCoverFragment playerAlbumCoverFragment =
(PlayerAlbumCoverFragment) getChildFragmentManager()
.findFragmentById(R.id.player_album_cover_fragment);
playerAlbumCoverFragment.setCallbacks(this);
playerAlbumCoverFragment.removeEffect();
}
@Override
public void onColorChanged(int color) {
playbackControlsFragment.setDark(color);
lastColor = color;
getCallbacks().onPaletteColorChanged();
ToolbarContentTintHelper.colorizeToolbar(toolbar, Color.WHITE, 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_card_blur_player, container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
toggleStatusBar(statusBar);
setUpSubFragments();
setUpPlayerToolbar();
}
private void setUpSubFragments() {
playbackControlsFragment = (CardBlurPlaybackControlsFragment) getChildFragmentManager()
.findFragmentById(R.id.playback_controls_fragment);
PlayerAlbumCoverFragment playerAlbumCoverFragment =
(PlayerAlbumCoverFragment) getChildFragmentManager()
.findFragmentById(R.id.player_album_cover_fragment);
playerAlbumCoverFragment.setCallbacks(this);
playerAlbumCoverFragment.removeEffect();
}
private void setUpPlayerToolbar() {
toolbar.inflateMenu(R.menu.menu_player);
toolbar.setNavigationOnClickListener(v -> getActivity().onBackPressed());
toolbar.setOnMenuItemClickListener(this);
private void setUpPlayerToolbar() {
toolbar.inflateMenu(R.menu.menu_player);
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());
}
ToolbarContentTintHelper.colorizeToolbar(toolbar, Color.WHITE, getActivity());
}
@Override
public void onServiceConnected() {
updateIsFavorite();
updateBlur();
}
@Override
public void onServiceConnected() {
updateIsFavorite();
updateBlur();
}
@Override
public void onPlayingMetaChanged() {
updateIsFavorite();
updateBlur();
}
@Override
public void onPlayingMetaChanged() {
updateIsFavorite();
updateBlur();
}
private void updateBlur() {
Activity activity = getActivity();
if (activity == null) {
return;
}
int blurAmount = PreferenceManager.getDefaultSharedPreferences(getContext()).getInt("blur_amount", 25);
colorBackground.clearColorFilter();
SongGlideRequest.Builder.from(Glide.with(activity), MusicPlayerRemote.getCurrentSong())
.checkIgnoreMediaStore(activity)
.generatePalette(activity)
.build()
.transform(new BlurTransformation(getActivity(), blurAmount))
.into(new RetroMusicColoredTarget(colorBackground) {
@Override
public void onColorReady(int color) {
if (color == getDefaultFooterColor()) {
colorBackground.setColorFilter(color);
}
}
});
private void updateBlur() {
Activity activity = getActivity();
if (activity == null) {
return;
}
int blurAmount = PreferenceManager.getDefaultSharedPreferences(getContext())
.getInt("new_blur_amount", 25);
colorBackground.clearColorFilter();
SongGlideRequest.Builder.from(Glide.with(activity), MusicPlayerRemote.getCurrentSong())
.checkIgnoreMediaStore(activity)
.generatePalette(activity)
.build()
.transform(new BlurTransformation.Builder(getActivity()).blurRadius(blurAmount).build())
.into(new RetroMusicColoredTarget(colorBackground) {
@Override
public void onColorReady(int color) {
if (color == getDefaultFooterColor()) {
colorBackground.setColorFilter(color);
}
}
});
}
}