Fixed progress slider barely visible with dark theme and black accent or light theme and white accent and progress slider stops working when switching between alternative and regular progress slider.

This commit is contained in:
Karim Abou Zeid 2015-08-16 20:06:01 +02:00
commit 207d5b381f
2 changed files with 37 additions and 26 deletions

View file

@ -30,6 +30,12 @@
<ol> <ol>
<li><b>FIX:</b> Playlist view wrong background color on dark theme. <li><b>FIX:</b> Playlist view wrong background color on dark theme.
</li> </li>
<li><b>FIX:</b> Progress slider barely visible with dark theme and black accent or light theme
and white accent.
</li>
<li><b>FIX:</b> Progress slider stops working when switching between alternative and regular
progress slider.
</li>
<li><b>FIX:</b> Removed the unneeded menu button from the artist and album list. <li><b>FIX:</b> Removed the unneeded menu button from the artist and album list.
</li> </li>
</ol> </ol>

View file

@ -134,7 +134,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
TextView songCurrentProgress; TextView songCurrentProgress;
TextView songTotalTime; TextView songTotalTime;
SeekBar seekBar; SeekBar progressSlider;
private int lastFooterColor = -1; private int lastFooterColor = -1;
private int lastTitleTextColor = -2; private int lastTitleTextColor = -2;
@ -168,9 +168,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
initAppearanceVarsFromSharedPrefs(); initAppearanceVarsFromSharedPrefs();
PreferenceUtil.getInstance(this).registerOnSharedPreferenceChangedListener(this); PreferenceUtil.getInstance(this).registerOnSharedPreferenceChangedListener(this);
initProgressSliderDependentViews();
moveSeekBarIntoPlace();
adjustTitleBoxSize(); adjustTitleBoxSize();
setUpPlaybackControllerCard(); setUpPlaybackControllerCard();
setUpMusicControllers(); setUpMusicControllers();
@ -265,9 +263,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
break; break;
case PreferenceUtil.ALTERNATIVE_PROGRESS_SLIDER_NOW_PLAYING: case PreferenceUtil.ALTERNATIVE_PROGRESS_SLIDER_NOW_PLAYING:
alternativeProgressSlider = PreferenceUtil.getInstance(this).alternativeProgressSliderNowPlaying(); alternativeProgressSlider = PreferenceUtil.getInstance(this).alternativeProgressSliderNowPlaying();
initProgressSliderDependentViews(); setUpProgressSlider();
moveSeekBarIntoPlace();
setTint(seekBar, getThemeColorAccent());
break; break;
case PreferenceUtil.PLAYBACK_CONTROLLER_CARD_NOW_PLAYING: case PreferenceUtil.PLAYBACK_CONTROLLER_CARD_NOW_PLAYING:
showPlaybackControllerCard = PreferenceUtil.getInstance(this).playbackControllerCardNowPlaying(); showPlaybackControllerCard = PreferenceUtil.getInstance(this).playbackControllerCardNowPlaying();
@ -510,7 +506,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
songCurrentProgress = (TextView) findViewById(R.id.player_alternative_song_current_progress); songCurrentProgress = (TextView) findViewById(R.id.player_alternative_song_current_progress);
songTotalTime = (TextView) findViewById(R.id.player_alternative_song_total_time); songTotalTime = (TextView) findViewById(R.id.player_alternative_song_total_time);
seekBar = (SeekBar) findViewById(R.id.player_alternative_progress_slider); progressSlider = (SeekBar) findViewById(R.id.player_alternative_progress_slider);
} else { } else {
findViewById(R.id.player_default_progress_container).setVisibility(View.VISIBLE); findViewById(R.id.player_default_progress_container).setVisibility(View.VISIBLE);
findViewById(R.id.player_default_progress_slider).setVisibility(View.VISIBLE); findViewById(R.id.player_default_progress_slider).setVisibility(View.VISIBLE);
@ -518,17 +514,17 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
songCurrentProgress = (TextView) findViewById(R.id.player_default_song_current_progress); songCurrentProgress = (TextView) findViewById(R.id.player_default_song_current_progress);
songTotalTime = (TextView) findViewById(R.id.player_default_song_total_time); songTotalTime = (TextView) findViewById(R.id.player_default_song_total_time);
seekBar = (SeekBar) findViewById(R.id.player_default_progress_slider); progressSlider = (SeekBar) findViewById(R.id.player_default_progress_slider);
} }
} }
private void moveSeekBarIntoPlace() { private void moveProgressSliderIntoPlace() {
if (!alternativeProgressSlider) { if (!alternativeProgressSlider) {
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) seekBar.getLayoutParams(); RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) progressSlider.getLayoutParams();
seekBar.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); progressSlider.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
final int seekBarMarginLeftRight = getResources().getDimensionPixelSize(R.dimen.seek_bar_margin_left_right); final int seekBarMarginLeftRight = getResources().getDimensionPixelSize(R.dimen.seek_bar_margin_left_right);
lp.setMargins(seekBarMarginLeftRight, 0, seekBarMarginLeftRight, -(seekBar.getMeasuredHeight() / 2)); lp.setMargins(seekBarMarginLeftRight, 0, seekBarMarginLeftRight, -(progressSlider.getMeasuredHeight() / 2));
seekBar.setLayoutParams(lp); progressSlider.setLayoutParams(lp);
} }
} }
@ -552,24 +548,33 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
setUpPrevNext(); setUpPrevNext();
setUpRepeatButton(); setUpRepeatButton();
setUpShuffleButton(); setUpShuffleButton();
setUpSeekBar(); setUpProgressSlider();
} }
private void setTint(@NonNull SeekBar seekBar, int color) { private void setUpProgressSliderTint() {
ColorStateList s1 = ColorStateList.valueOf(color);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
seekBar.setThumbTintList(s1); if (alternativeProgressSlider) {
if (!alternativeProgressSlider) seekBar.setProgressTintList(s1); progressSlider.setThumbTintList(ThemeSingleton.get().positiveColor);
} else { } else {
seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN); final ColorStateList seekBarTint = ColorStateList.valueOf(getThemeColorAccent());
if (!alternativeProgressSlider) progressSlider.setThumbTintList(seekBarTint);
seekBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN); progressSlider.setProgressTintList(seekBarTint);
}
} else {
if (alternativeProgressSlider) {
progressSlider.getThumb().setColorFilter(ThemeSingleton.get().positiveColor.getDefaultColor(), PorterDuff.Mode.SRC_IN);
} else {
progressSlider.getThumb().setColorFilter(getThemeColorAccent(), PorterDuff.Mode.SRC_IN);
progressSlider.getProgressDrawable().setColorFilter(getThemeColorAccent(), PorterDuff.Mode.SRC_IN);
}
} }
} }
private void setUpSeekBar() { private void setUpProgressSlider() {
setTint(seekBar, getThemeColorAccent()); initProgressSliderDependentViews();
seekBar.setOnSeekBarChangeListener(new SimpleOnSeekbarChangeListener() { moveProgressSliderIntoPlace();
setUpProgressSliderTint();
progressSlider.setOnSeekBarChangeListener(new SimpleOnSeekbarChangeListener() {
@Override @Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) { if (fromUser) {
@ -871,8 +876,8 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
final int totalMillis = MusicPlayerRemote.getSongDurationMillis(); final int totalMillis = MusicPlayerRemote.getSongDurationMillis();
final int progressMillis = MusicPlayerRemote.getSongProgressMillis(); final int progressMillis = MusicPlayerRemote.getSongProgressMillis();
seekBar.setMax(totalMillis); progressSlider.setMax(totalMillis);
seekBar.setProgress(progressMillis); progressSlider.setProgress(progressMillis);
songCurrentProgress.setText(MusicUtil.getReadableDurationString(progressMillis)); songCurrentProgress.setText(MusicUtil.getReadableDurationString(progressMillis));
songTotalTime.setText(MusicUtil.getReadableDurationString(totalMillis)); songTotalTime.setText(MusicUtil.getReadableDurationString(totalMillis));