A lot of fixes and small changes
This commit is contained in:
parent
fd6d6d9e75
commit
865f72e5bb
33 changed files with 360 additions and 479 deletions
|
|
@ -27,8 +27,8 @@ android {
|
|||
applicationId "com.kabouzeid.gramophone"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 22
|
||||
versionCode 28
|
||||
versionName "0.9.12b DEV"
|
||||
versionCode 29
|
||||
versionName "0.9.13b DEV"
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
|
|
@ -55,12 +55,13 @@ dependencies {
|
|||
transitive = true;
|
||||
}
|
||||
|
||||
compile 'com.android.support:appcompat-v7:22.1.1@aar'
|
||||
compile 'com.android.support:recyclerview-v7:22.1.1@aar'
|
||||
compile 'com.android.support:gridlayout-v7:22.1.1@aar'
|
||||
compile 'com.android.support:palette-v7:22.1.1@aar'
|
||||
compile 'com.android.support:support-v13:22.1.1@aar'
|
||||
compile 'com.android.support:cardview-v7:22.1.1@aar'
|
||||
compile 'com.android.support:appcompat-v7:22.2.0@aar'
|
||||
compile 'com.android.support:recyclerview-v7:22.2.0@aar'
|
||||
compile 'com.android.support:gridlayout-v7:22.2.0@aar'
|
||||
compile 'com.android.support:palette-v7:22.2.0@aar'
|
||||
compile 'com.android.support:support-v13:22.2.0@aar'
|
||||
compile 'com.android.support:cardview-v7:22.2.0@aar'
|
||||
compile 'com.android.support:design:22.2.0@aar'
|
||||
|
||||
compile 'com.github.ksoichiro:android-observablescrollview:1.5.1'
|
||||
compile 'asia.ivity.android:drag-sort-listview:1.0'
|
||||
|
|
@ -76,5 +77,4 @@ dependencies {
|
|||
compile 'com.afollestad:material-cab:0.1.2'
|
||||
compile 'com.jpardogo.materialtabstrip:library:1.0.9'
|
||||
compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
|
||||
compile 'com.melnykov:floatingactionbutton:1.3.0'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -204,9 +204,9 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
public void onGenerated(Palette palette) {
|
||||
final Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
|
||||
if (vibrantSwatch != null) {
|
||||
title.setTextColor(vibrantSwatch.getTitleTextColor());
|
||||
artist.setTextColor(vibrantSwatch.getTitleTextColor());
|
||||
ViewUtil.animateViewColor(footer, DialogUtils.resolveColor(activity, R.attr.default_bar_color), vibrantSwatch.getRgb());
|
||||
title.setTextColor(Util.getColorWithoutAlpha(vibrantSwatch.getTitleTextColor()));
|
||||
artist.setTextColor(Util.getColorWithoutAlpha(vibrantSwatch.getTitleTextColor()));
|
||||
ViewUtil.animateViewColor(footer, footer.getDrawingCacheBackgroundColor(), vibrantSwatch.getRgb());
|
||||
} else {
|
||||
paletteBlackAndWhite(title, artist, footer);
|
||||
}
|
||||
|
|
@ -218,8 +218,8 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
}
|
||||
|
||||
private void paletteBlackAndWhite(final TextView title, final TextView artist, final View footer) {
|
||||
title.setTextColor(DialogUtils.resolveColor(activity, R.attr.title_text_color));
|
||||
artist.setTextColor(DialogUtils.resolveColor(activity, R.attr.caption_text_color));
|
||||
title.setTextColor(Util.getColorWithoutAlpha(DialogUtils.resolveColor(activity, R.attr.title_text_color)));
|
||||
artist.setTextColor(Util.getColorWithoutAlpha(DialogUtils.resolveColor(activity, R.attr.caption_text_color)));
|
||||
int defaultBarColor = DialogUtils.resolveColor(activity, R.attr.default_bar_color);
|
||||
ViewUtil.animateViewColor(footer, defaultBarColor, defaultBarColor);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ public class ColorChooserDialog extends DialogFragment implements View.OnClickLi
|
|||
if (getArguments().getInt("title", 0) == R.string.primary_color) {
|
||||
getArguments().putInt("preselect", getResources().getColor(R.color.indigo_500));
|
||||
} else if (getArguments().getInt("title", 0) == R.string.accent_color) {
|
||||
getArguments().putInt("preselect", getResources().getColor(R.color.pink_500));
|
||||
getArguments().putInt("preselect", getResources().getColor(R.color.pink_A200));
|
||||
}
|
||||
invalidateGrid();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -362,6 +362,11 @@ public class DragSortRecycler extends RecyclerView.ItemDecoration implements Rec
|
|||
rv.invalidateItemDecorations();// Redraw
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
|
||||
|
||||
}
|
||||
|
||||
private void setIsDragging(final boolean dragging) {
|
||||
if (dragging != isDragging) {
|
||||
isDragging = dragging;
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ package com.kabouzeid.gramophone.ui.activities;
|
|||
import android.animation.Animator;
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -16,10 +16,11 @@ import android.view.Menu;
|
|||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewAnimationUtils;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.DecelerateInterpolator;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
|
@ -27,7 +28,6 @@ import com.afollestad.materialdialogs.ThemeSingleton;
|
|||
import com.afollestad.materialdialogs.util.DialogUtils;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog;
|
||||
import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
|
||||
import com.kabouzeid.gramophone.dialogs.SongDetailDialog;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.helper.bitmapblur.StackBlurManager;
|
||||
|
|
@ -44,7 +44,7 @@ import com.kabouzeid.gramophone.util.NavigationUtil;
|
|||
import com.kabouzeid.gramophone.util.PreferenceUtils;
|
||||
import com.kabouzeid.gramophone.util.Util;
|
||||
import com.kabouzeid.gramophone.util.ViewUtil;
|
||||
import com.nineoldandroids.view.ViewPropertyAnimator;
|
||||
import com.kabouzeid.gramophone.views.SquareIfPlaceImageView;
|
||||
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
||||
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||
import com.nostra13.universalimageloader.core.assist.FailReason;
|
||||
|
|
@ -55,18 +55,16 @@ import java.io.File;
|
|||
public class MusicControllerActivity extends AbsFabActivity {
|
||||
|
||||
public static final String TAG = MusicControllerActivity.class.getSimpleName();
|
||||
private static final int DEFAULT_DELAY = 350;
|
||||
private static final int DEFAULT_ANIMATION_TIME = 1000;
|
||||
private static final int COLOR_TRANSITION_TIME = 400;
|
||||
|
||||
private Song song;
|
||||
private ImageView albumArt;
|
||||
private SquareIfPlaceImageView albumArt;
|
||||
private ImageView albumArtBackground;
|
||||
private TextView songTitle;
|
||||
private TextView songArtist;
|
||||
private TextView currentSongProgress;
|
||||
private TextView totalSongDuration;
|
||||
private View footer;
|
||||
private View progressContainer;
|
||||
private SeekBar progressSlider;
|
||||
private ImageButton nextButton;
|
||||
private ImageButton prevButton;
|
||||
|
|
@ -75,8 +73,12 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
private View mediaControllerContainer;
|
||||
private Toolbar toolbar;
|
||||
private int lastFooterColor = -1;
|
||||
private int lastTextColor = -2;
|
||||
private boolean killThreads = false;
|
||||
|
||||
private boolean opaqueToolBar = PreferenceUtils.getInstance(this).opaqueToolbarNowPlaying();
|
||||
private boolean forceSquareAlbumArt = PreferenceUtils.getInstance(this).forceAlbumArtSquared();
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
|
@ -91,6 +93,9 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
|
||||
setUpMusicControllers();
|
||||
|
||||
albumArt.forceSquare(forceSquareAlbumArt);
|
||||
setToolbarOpaque(opaqueToolBar);
|
||||
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setTitle(null);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
|
@ -113,8 +118,6 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
animator.setDuration(1000);
|
||||
animator.start();
|
||||
|
||||
int i = footer.getHeight();
|
||||
|
||||
mediaControllerContainer.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
|
@ -143,11 +146,11 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
}
|
||||
|
||||
private void moveSeekBarIntoPlace() {
|
||||
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) progressSlider.getLayoutParams();
|
||||
progressSlider.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
|
||||
final int seekBarMarginLeftRight = getResources().getDimensionPixelSize(R.dimen.seek_bar_margin_left_right);
|
||||
lp.setMargins(seekBarMarginLeftRight, getResources().getDimensionPixelSize(R.dimen.progress_container_height) - (progressSlider.getMeasuredHeight() / 2), seekBarMarginLeftRight, 0);
|
||||
progressSlider.setLayoutParams(lp);
|
||||
// RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) progressSlider.getLayoutParams();
|
||||
// progressSlider.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
|
||||
// final int seekBarMarginLeftRight = getResources().getDimensionPixelSize(R.dimen.seek_bar_margin_left_right);
|
||||
// lp.setMargins(seekBarMarginLeftRight, 0, seekBarMarginLeftRight, -(progressSlider.getMeasuredHeight() / 2));
|
||||
// progressSlider.setLayoutParams(lp);
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
|
|
@ -155,7 +158,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
prevButton = (ImageButton) findViewById(R.id.prev_button);
|
||||
repeatButton = (ImageButton) findViewById(R.id.repeat_button);
|
||||
shuffleButton = (ImageButton) findViewById(R.id.shuffle_button);
|
||||
albumArt = (ImageView) findViewById(R.id.album_art);
|
||||
albumArt = (SquareIfPlaceImageView) findViewById(R.id.album_art);
|
||||
albumArtBackground = (ImageView) findViewById(R.id.album_art_background);
|
||||
songTitle = (TextView) findViewById(R.id.song_title);
|
||||
songArtist = (TextView) findViewById(R.id.song_artist);
|
||||
|
|
@ -165,7 +168,6 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
progressSlider = (SeekBar) findViewById(R.id.progress_slider);
|
||||
mediaControllerContainer = findViewById(R.id.media_controller_container);
|
||||
toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
progressContainer = findViewById(R.id.progress_container);
|
||||
}
|
||||
|
||||
private void setUpMusicControllers() {
|
||||
|
|
@ -176,20 +178,10 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
}
|
||||
|
||||
private static void setTint(SeekBar seekBar, int color) {
|
||||
ColorStateList s1 = ColorStateList.valueOf(color);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
seekBar.setThumbTintList(s1);
|
||||
seekBar.setProgressTintList(s1);
|
||||
} else {
|
||||
seekBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
|
||||
seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
||||
|
||||
}
|
||||
seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
|
||||
private void setUpProgressSlider() {
|
||||
setTint(progressSlider, ThemeSingleton.get().positiveColor);
|
||||
progressSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
|
|
@ -343,10 +335,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
if (vibrantSwatch != null) {
|
||||
final int swatchRgb = vibrantSwatch.getRgb();
|
||||
animateColorChange(swatchRgb);
|
||||
songTitle.setTextColor(vibrantSwatch.getTitleTextColor());
|
||||
songArtist.setTextColor(vibrantSwatch.getBodyTextColor());
|
||||
currentSongProgress.setTextColor(vibrantSwatch.getTitleTextColor());
|
||||
totalSongDuration.setTextColor(vibrantSwatch.getTitleTextColor());
|
||||
animateTextColorChange(Util.getColorWithoutAlpha(vibrantSwatch.getTitleTextColor()));
|
||||
notifyTaskColorChange(swatchRgb);
|
||||
} else {
|
||||
resetColors();
|
||||
|
|
@ -359,16 +348,14 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
}
|
||||
|
||||
private void resetColors() {
|
||||
final int songTitleTextColor = DialogUtils.resolveColor(this, R.attr.title_text_color);
|
||||
final int artistNameTextColor = DialogUtils.resolveColor(this, R.attr.caption_text_color);
|
||||
final int textColor = Util.getColorWithoutAlpha(DialogUtils.resolveColor(this, R.attr.title_text_color));
|
||||
final int defaultBarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
||||
|
||||
animateColorChange(defaultBarColor);
|
||||
animateTextColorChange(textColor);
|
||||
|
||||
songTitle.setTextColor(songTitleTextColor);
|
||||
songArtist.setTextColor(artistNameTextColor);
|
||||
currentSongProgress.setTextColor(artistNameTextColor);
|
||||
totalSongDuration.setTextColor(artistNameTextColor);
|
||||
currentSongProgress.setTextColor(DialogUtils.resolveColor(MusicControllerActivity.this, R.attr.themed_drawable_color));
|
||||
totalSongDuration.setTextColor(DialogUtils.resolveColor(MusicControllerActivity.this, R.attr.themed_drawable_color));
|
||||
|
||||
notifyTaskColorChange(defaultBarColor);
|
||||
}
|
||||
|
|
@ -376,20 +363,38 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
private void animateColorChange(final int newColor) {
|
||||
if (lastFooterColor != -1 && lastFooterColor != newColor) {
|
||||
ViewUtil.animateViewColor(footer, lastFooterColor, newColor, 300);
|
||||
ViewUtil.animateViewColor(progressContainer, ColorChooserDialog.shiftColorDown(lastFooterColor), ColorChooserDialog.shiftColorDown(newColor), 300);
|
||||
ViewUtil.animateViewColor(toolbar, lastFooterColor, newColor, 300);
|
||||
ViewUtil.animateViewColor(footer, lastFooterColor, newColor, COLOR_TRANSITION_TIME);
|
||||
|
||||
if (opaqueToolBar)
|
||||
ViewUtil.animateViewColor(toolbar, lastFooterColor, newColor, COLOR_TRANSITION_TIME);
|
||||
else toolbar.setBackgroundColor(Color.TRANSPARENT);
|
||||
} else {
|
||||
footer.setBackgroundColor(newColor);
|
||||
progressContainer.setBackgroundColor(ColorChooserDialog.shiftColorDown(newColor));
|
||||
toolbar.setBackgroundColor(newColor);
|
||||
|
||||
if (opaqueToolBar) toolbar.setBackgroundColor(newColor);
|
||||
else toolbar.setBackgroundColor(Color.TRANSPARENT);
|
||||
}
|
||||
setStatusBarColor(newColor);
|
||||
|
||||
setTint(progressSlider, PreferenceUtils.getInstance(this).getThemeColorAccent());
|
||||
if (opaqueToolBar) setStatusBarColor(newColor);
|
||||
else setStatusBarColor(Color.TRANSPARENT);
|
||||
|
||||
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarCurrentPlayingEnabled())
|
||||
setNavigationBarColor(newColor);
|
||||
lastFooterColor = newColor;
|
||||
}
|
||||
|
||||
private void animateTextColorChange(final int newColor) {
|
||||
if (lastTextColor != -2 && lastTextColor != newColor) {
|
||||
ViewUtil.animateTextColor(songTitle, lastTextColor, newColor, COLOR_TRANSITION_TIME);
|
||||
ViewUtil.animateTextColor(songArtist, lastTextColor, newColor, COLOR_TRANSITION_TIME);
|
||||
} else {
|
||||
songTitle.setTextColor(newColor);
|
||||
songArtist.setTextColor(newColor);
|
||||
}
|
||||
lastTextColor = newColor;
|
||||
}
|
||||
|
||||
private void getCurrentSong() {
|
||||
song = MusicPlayerRemote.getCurrentSong();
|
||||
if (song.id == -1) {
|
||||
|
|
@ -457,14 +462,6 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
killThreads = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
if (hasFocus) {
|
||||
animateActivityOpened(DEFAULT_DELAY);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_music_playing, menu);
|
||||
|
|
@ -511,13 +508,16 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void animateActivityOpened(int startDelay) {
|
||||
ViewPropertyAnimator.animate(footer)
|
||||
.scaleX(1)
|
||||
.scaleY(1)
|
||||
.setInterpolator(new DecelerateInterpolator(4))
|
||||
.setDuration(DEFAULT_ANIMATION_TIME)
|
||||
.setStartDelay(startDelay)
|
||||
.start();
|
||||
private void setToolbarOpaque(boolean toolbarOpaque) {
|
||||
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) findViewById(R.id.album_art_frame).getLayoutParams();
|
||||
if (!toolbarOpaque) {
|
||||
if (Build.VERSION.SDK_INT > 16) {
|
||||
params.removeRule(RelativeLayout.BELOW);
|
||||
} else {
|
||||
params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
params.addRule(RelativeLayout.ABOVE, R.id.footer_frame);
|
||||
}
|
||||
} else params.addRule(RelativeLayout.BELOW, R.id.toolbar_frame);
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.kabouzeid.gramophone.ui.activities.base;
|
|||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.util.Log;
|
||||
import android.view.GestureDetector;
|
||||
|
|
@ -13,14 +14,12 @@ import android.widget.Toast;
|
|||
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.misc.SmallOnGestureListener;
|
||||
import com.kabouzeid.gramophone.model.MusicRemoteEvent;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||
import com.kabouzeid.gramophone.views.PlayPauseDrawable;
|
||||
import com.melnykov.fab.FloatingActionButton;
|
||||
import com.squareup.otto.Subscribe;
|
||||
|
||||
/**
|
||||
|
|
@ -55,15 +54,10 @@ public abstract class AbsFabActivity extends AbsBaseActivity {
|
|||
|
||||
getFab().setImageDrawable(playPauseDrawable);
|
||||
final int accentColor = ThemeSingleton.get().positiveColor;
|
||||
getFab().setRippleColor(accentColor);
|
||||
if (accentColor == Color.WHITE) {
|
||||
getFab().setColorNormal(accentColor);
|
||||
getFab().setColorPressed(ColorChooserDialog.shiftColorDown(accentColor));
|
||||
getFab().setColorRipple(ColorChooserDialog.shiftColorUp(accentColor));
|
||||
getFab().getDrawable().setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_IN);
|
||||
} else {
|
||||
getFab().setColorNormal(accentColor);
|
||||
getFab().setColorPressed(ColorChooserDialog.shiftColorUp(accentColor));
|
||||
getFab().setColorRipple(ColorChooserDialog.shiftColorDown(accentColor));
|
||||
getFab().getDrawable().clearColorFilter();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import android.media.MediaScannerConnection;
|
|||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v7.graphics.Palette;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
|
|
@ -19,6 +20,7 @@ import android.view.animation.OvershootInterpolator;
|
|||
import android.widget.ImageView;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||
import com.afollestad.materialdialogs.util.DialogUtils;
|
||||
import com.github.ksoichiro.android.observablescrollview.ObservableScrollView;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
|
|
@ -32,7 +34,6 @@ import com.kabouzeid.gramophone.util.MusicUtil;
|
|||
import com.kabouzeid.gramophone.util.PreferenceUtils;
|
||||
import com.kabouzeid.gramophone.util.Util;
|
||||
import com.kabouzeid.gramophone.util.ViewUtil;
|
||||
import com.melnykov.fab.FloatingActionButton;
|
||||
import com.nineoldandroids.view.ViewHelper;
|
||||
import com.nineoldandroids.view.ViewPropertyAnimator;
|
||||
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||
|
|
@ -207,6 +208,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
|
|||
save();
|
||||
}
|
||||
});
|
||||
fab.setRippleColor(ThemeSingleton.get().positiveColor);
|
||||
}
|
||||
|
||||
protected abstract void save();
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@ public final class PreferenceUtils {
|
|||
public static final String TRANSPARENT_TOOLBAR = "transparent_toolbar";
|
||||
public static final String ALBUM_GRID_COLUMNS = "album_grid_columns";
|
||||
public static final String ALBUM_GRID_COLUMNS_LAND = "album_grid_columns_land";
|
||||
public static final String OPAQUE_TOOLBAR_NOW_PLAYING = "opaque_toolbar_now_playing";
|
||||
public static final String FORCE_SQUARE_ALBUM_ART = "force_square_album_art";
|
||||
|
||||
private static PreferenceUtils sInstance;
|
||||
|
||||
|
|
@ -79,7 +81,7 @@ public final class PreferenceUtils {
|
|||
}
|
||||
|
||||
public int getThemeColorAccent() {
|
||||
return mPreferences.getInt("accent_color", mContext.getResources().getColor(R.color.pink_500));
|
||||
return mPreferences.getInt("accent_color", mContext.getResources().getColor(R.color.pink_A200));
|
||||
}
|
||||
|
||||
@SuppressLint("CommitPrefEdits")
|
||||
|
|
@ -163,6 +165,14 @@ public final class PreferenceUtils {
|
|||
return mPreferences.getBoolean(TRANSPARENT_TOOLBAR, false);
|
||||
}
|
||||
|
||||
public final boolean opaqueToolbarNowPlaying() {
|
||||
return mPreferences.getBoolean(OPAQUE_TOOLBAR_NOW_PLAYING, false);
|
||||
}
|
||||
|
||||
public final boolean forceAlbumArtSquared() {
|
||||
return mPreferences.getBoolean(FORCE_SQUARE_ALBUM_ART, false);
|
||||
}
|
||||
|
||||
// public final boolean downloadMissingArtistImages() {
|
||||
// return mPreferences.getBoolean(DOWNLOAD_MISSING_ARTIST_IMAGES, true);
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import android.content.res.TypedArray;
|
|||
import android.graphics.PorterDuff;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.ColorInt;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.util.TypedValue;
|
||||
|
|
@ -201,4 +202,8 @@ public class Util {
|
|||
}
|
||||
return drawable;
|
||||
}
|
||||
|
||||
public static int getColorWithoutAlpha(@ColorInt int color) {
|
||||
return color | 0xFF000000;
|
||||
}
|
||||
}
|
||||
|
|
@ -13,12 +13,15 @@ import android.widget.CheckBox;
|
|||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||
import com.afollestad.materialdialogs.internal.MDTintHelper;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
|
|
@ -84,6 +87,22 @@ public class ViewUtil {
|
|||
animator.start();
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
public static void animateTextColor(final TextView v, final int startColor, final int endColor) {
|
||||
animateTextColor(v, startColor, endColor, DEFAULT_COLOR_ANIMATION_DURATION);
|
||||
}
|
||||
|
||||
public static void animateTextColor(final TextView v, final int startColor, final int endColor, final int duration) {
|
||||
ObjectAnimator animator = ObjectAnimator.ofObject(v, "textColor",
|
||||
new ArgbEvaluator(), startColor, endColor);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
animator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
|
||||
}
|
||||
animator.setDuration(duration);
|
||||
animator.start();
|
||||
}
|
||||
|
||||
public static void setBackgroundAlpha(View view, float alpha, int baseColor) {
|
||||
int a = Math.min(255, Math.max(0, (int) (alpha * 255))) << 24;
|
||||
int rgb = 0x00ffffff & baseColor;
|
||||
|
|
|
|||
|
|
@ -7,17 +7,17 @@ import android.widget.ImageView;
|
|||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class HeightAndWidthFitSquarePlaceLeftRightImageView extends ImageView {
|
||||
public class HeightWidthFitSquareImageView extends ImageView {
|
||||
|
||||
public HeightAndWidthFitSquarePlaceLeftRightImageView(Context context) {
|
||||
public HeightWidthFitSquareImageView(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public HeightAndWidthFitSquarePlaceLeftRightImageView(Context context, AttributeSet attrs) {
|
||||
public HeightWidthFitSquareImageView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public HeightAndWidthFitSquarePlaceLeftRightImageView(Context context, AttributeSet attrs, int defStyle) {
|
||||
public HeightWidthFitSquareImageView(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
|
|
@ -44,8 +44,6 @@ public class PlayPauseDrawable extends Drawable {
|
|||
|
||||
private float width;
|
||||
private float height;
|
||||
private final float fallBackWidth;
|
||||
private final float fallBackHeight;
|
||||
|
||||
private float progress;
|
||||
private boolean isPlay;
|
||||
|
|
@ -61,8 +59,6 @@ public class PlayPauseDrawable extends Drawable {
|
|||
pauseBarWidth = res.getDimensionPixelSize(R.dimen.pause_bar_width);
|
||||
pauseBarHeight = res.getDimensionPixelSize(R.dimen.pause_bar_height);
|
||||
pauseBarDistance = res.getDimensionPixelSize(R.dimen.pause_bar_distance);
|
||||
fallBackWidth = res.getDimensionPixelSize(R.dimen.fab_icon_bound_width);
|
||||
fallBackHeight = res.getDimensionPixelSize(R.dimen.fab_icon_bound_height);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -71,9 +67,6 @@ public class PlayPauseDrawable extends Drawable {
|
|||
if (bounds.width() > 0 && bounds.height() > 0) {
|
||||
width = bounds.width();
|
||||
height = bounds.height();
|
||||
} else {
|
||||
width = fallBackWidth;
|
||||
height = fallBackHeight;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,126 +0,0 @@
|
|||
package com.kabouzeid.gramophone.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
|
||||
/**
|
||||
* A layout that draws something in the insets passed to {@link #fitSystemWindows(Rect)}, i.e. the area above UI chrome
|
||||
* (status and navigation bars, overlay action bars).
|
||||
*/
|
||||
public class ScrimInsetsFrameLayout extends FrameLayout {
|
||||
private Drawable mInsetForeground;
|
||||
|
||||
private Rect mInsets;
|
||||
private Rect mTempRect = new Rect();
|
||||
private OnInsetsCallback mOnInsetsCallback;
|
||||
|
||||
public ScrimInsetsFrameLayout(Context context) {
|
||||
super(context);
|
||||
init(context, null, 0);
|
||||
}
|
||||
|
||||
public ScrimInsetsFrameLayout(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init(context, attrs, 0);
|
||||
}
|
||||
|
||||
public ScrimInsetsFrameLayout(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
init(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
private void init(Context context, AttributeSet attrs, int defStyle) {
|
||||
final TypedArray a = context.obtainStyledAttributes(attrs,
|
||||
R.styleable.ScrimInsetsView, defStyle, 0);
|
||||
if (a == null) {
|
||||
return;
|
||||
}
|
||||
mInsetForeground = a.getDrawable(R.styleable.ScrimInsetsView_insetForeground);
|
||||
a.recycle();
|
||||
|
||||
setWillNotDraw(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean fitSystemWindows(Rect insets) {
|
||||
mInsets = new Rect(insets);
|
||||
setWillNotDraw(mInsetForeground == null);
|
||||
ViewCompat.postInvalidateOnAnimation(this);
|
||||
if (mOnInsetsCallback != null) {
|
||||
mOnInsetsCallback.onInsetsChanged(insets);
|
||||
}
|
||||
return true; // consume insets
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Canvas canvas) {
|
||||
super.draw(canvas);
|
||||
|
||||
int width = getWidth();
|
||||
int height = getHeight();
|
||||
if (mInsets != null && mInsetForeground != null) {
|
||||
int sc = canvas.save();
|
||||
canvas.translate(getScrollX(), getScrollY());
|
||||
|
||||
// Top
|
||||
mTempRect.set(0, 0, width, mInsets.top);
|
||||
mInsetForeground.setBounds(mTempRect);
|
||||
mInsetForeground.draw(canvas);
|
||||
|
||||
// Bottom
|
||||
mTempRect.set(0, height - mInsets.bottom, width, height);
|
||||
mInsetForeground.setBounds(mTempRect);
|
||||
mInsetForeground.draw(canvas);
|
||||
|
||||
// Left
|
||||
mTempRect.set(0, mInsets.top, mInsets.left, height - mInsets.bottom);
|
||||
mInsetForeground.setBounds(mTempRect);
|
||||
mInsetForeground.draw(canvas);
|
||||
|
||||
// Right
|
||||
mTempRect.set(width - mInsets.right, mInsets.top, width, height - mInsets.bottom);
|
||||
mInsetForeground.setBounds(mTempRect);
|
||||
mInsetForeground.draw(canvas);
|
||||
|
||||
canvas.restoreToCount(sc);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
if (mInsetForeground != null) {
|
||||
mInsetForeground.setCallback(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
if (mInsetForeground != null) {
|
||||
mInsetForeground.setCallback(null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows the calling container to specify a callback for custom processing when insets change (i.e. when
|
||||
* {@link #fitSystemWindows(Rect)} is called. This is useful for setting padding on UI elements based on
|
||||
* UI chrome insets (e.g. a Google Map or a ListView). When using with ListView or GridView, remember to set
|
||||
* clipToPadding to false.
|
||||
*/
|
||||
public void setOnInsetsCallback(OnInsetsCallback onInsetsCallback) {
|
||||
mOnInsetsCallback = onInsetsCallback;
|
||||
}
|
||||
|
||||
public static interface OnInsetsCallback {
|
||||
public void onInsetsChanged(Rect insets);
|
||||
}
|
||||
}
|
||||
|
|
@ -8,17 +8,18 @@ import android.widget.ImageView;
|
|||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class SquareIfPlaceLeftRightImageView extends ImageView {
|
||||
public class SquareIfPlaceImageView extends ImageView {
|
||||
private boolean forceSquare = false;
|
||||
|
||||
public SquareIfPlaceLeftRightImageView(Context context) {
|
||||
public SquareIfPlaceImageView(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public SquareIfPlaceLeftRightImageView(Context context, AttributeSet attrs) {
|
||||
public SquareIfPlaceImageView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public SquareIfPlaceLeftRightImageView(Context context, AttributeSet attrs, int defStyle) {
|
||||
public SquareIfPlaceImageView(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
|
|
@ -27,9 +28,17 @@ public class SquareIfPlaceLeftRightImageView extends ImageView {
|
|||
final int small = Math.min(widthMeasureSpec, heightMeasureSpec);
|
||||
final int large = Math.max(widthMeasureSpec, heightMeasureSpec);
|
||||
|
||||
if (View.MeasureSpec.getSize(large) > View.MeasureSpec.getSize(small) * 1.5)
|
||||
if (forceSquare) super.onMeasure(small, small);
|
||||
else if (View.MeasureSpec.getSize(large) > View.MeasureSpec.getSize(small) * 1.5)
|
||||
super.onMeasure(small, small);
|
||||
else super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
}
|
||||
|
||||
public void forceSquare(boolean force) {
|
||||
if (forceSquare != force) {
|
||||
forceSquare = force;
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<size
|
||||
android:height="12dp"
|
||||
android:width="12dp"/>
|
||||
android:height="20dp"
|
||||
android:width="3dp" />
|
||||
<solid
|
||||
android:color="@color/materialmusic_accent_color"/>
|
||||
android:color="?colorAccent" />
|
||||
</shape>
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop" />
|
||||
|
||||
<com.kabouzeid.gramophone.views.SquareIfPlaceLeftRightImageView
|
||||
<com.kabouzeid.gramophone.views.SquareIfPlaceImageView
|
||||
android:id="@+id/album_art"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
|
@ -97,18 +97,10 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_gravity="end|right|bottom"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:ignore="RtlHardcoded">
|
||||
|
||||
<com.melnykov.fab.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_margin="16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
android:layout_margin="16dp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
|
@ -159,7 +159,7 @@
|
|||
android:gravity="start|left"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<com.melnykov.fab.FloatingActionButton
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_gravity="bottom|right|end"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop" />
|
||||
|
||||
<com.kabouzeid.gramophone.views.SquareIfPlaceLeftRightImageView
|
||||
<com.kabouzeid.gramophone.views.SquareIfPlaceImageView
|
||||
android:id="@+id/artist_image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/header_image_height"
|
||||
|
|
@ -98,18 +98,10 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_gravity="end|right|bottom"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:ignore="RtlHardcoded">
|
||||
|
||||
<com.melnykov.fab.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_margin="16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
android:layout_margin="16dp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
|
@ -70,18 +70,12 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|right|bottom"
|
||||
tools:ignore="RtlHardcoded">
|
||||
|
||||
<com.melnykov.fab.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_margin="16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:layout_margin="16dp"
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_gravity="end|bottom" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,199 @@
|
|||
android:layout_height="match_parent"
|
||||
tools:context="com.kabouzeid.gramophone.ui.activities.MusicControllerActivity">
|
||||
|
||||
<!-- BOTTOM-->
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/footer_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/progress_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/progress_container_height"
|
||||
android:background="?music_controller_container_color"
|
||||
android:elevation="@dimen/toolbar_elevation"
|
||||
tools:ignore="UnusedAttribute">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/song_current_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:gravity="center_vertical|left|end"
|
||||
android:paddingLeft="8dp"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Title"
|
||||
android:textColor="?themed_drawable_color"
|
||||
android:textSize="10sp"
|
||||
tools:ignore="RtlHardcoded,RtlSymmetry,SmallSp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/song_total_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentRight="true"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:gravity="center_vertical|right|end"
|
||||
android:paddingRight="8dp"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Title"
|
||||
android:textColor="?themed_drawable_color"
|
||||
android:textSize="10sp"
|
||||
tools:ignore="RtlHardcoded,RtlSymmetry,SmallSp" />
|
||||
|
||||
<SeekBar
|
||||
android:id="@+id/progress_slider"
|
||||
style="@style/MusicProgressSlider"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_toLeftOf="@id/song_total_time"
|
||||
android:layout_toRightOf="@id/song_current_progress"
|
||||
tools:ignore="RtlHardcoded,UnusedAttribute" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/footer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?default_bar_color"
|
||||
android:elevation="@dimen/toolbar_elevation"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="32dp"
|
||||
android:paddingLeft="72dp"
|
||||
android:paddingRight="72dp"
|
||||
android:paddingTop="32dp"
|
||||
android:transitionName="@string/transition_album_text"
|
||||
tools:ignore="UnusedAttribute">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/song_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Title"
|
||||
android:textColor="?attr/title_text_color"
|
||||
android:textSize="24sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/song_artist"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="sans-serif"
|
||||
android:paddingTop="4dp"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Caption"
|
||||
android:textColor="?attr/caption_text_color"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/media_controller_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/media_controller_container_height"
|
||||
android:background="?music_controller_container_color"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
tools:ignore="ContentDescription,UnusedAttribute">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/prev_button"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="-8dp"
|
||||
android:layout_marginRight="-8dp"
|
||||
android:layout_toLeftOf="@+id/fab"
|
||||
android:layout_toStartOf="@+id/fab"
|
||||
android:background="?round_selector"
|
||||
android:padding="22dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_skip_previous_white_48dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/next_button"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="-8dp"
|
||||
android:layout_marginStart="-8dp"
|
||||
android:layout_toEndOf="@+id/fab"
|
||||
android:layout_toRightOf="@+id/fab"
|
||||
android:background="?round_selector"
|
||||
android:padding="22dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_skip_next_white_48dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/repeat_button"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:background="?round_selector"
|
||||
android:padding="22dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_repeat_white_48dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/shuffle_button"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:background="?round_selector"
|
||||
android:padding="22dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_shuffle_white_48dp" />
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_centerInParent="true" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<!-- ALBUMART-->
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/album_art_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@id/footer_frame"
|
||||
android:background="@color/black">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/album_art_background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<com.kabouzeid.gramophone.views.SquareIfPlaceImageView
|
||||
android:id="@+id/album_art"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/default_album_art"
|
||||
android:transitionName="@string/transition_album_cover"
|
||||
tools:ignore="ContentDescription,UnusedAttribute" />
|
||||
</FrameLayout>
|
||||
|
||||
<!-- TOOLBAR-->
|
||||
|
||||
<FrameLayout
|
||||
|
|
@ -16,203 +209,7 @@
|
|||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
style="@style/Toolbar"
|
||||
android:background="?default_bar_color" />
|
||||
</FrameLayout>
|
||||
|
||||
<!-- BOTTOM-->
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/footer_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/progress_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/progress_container_height"
|
||||
android:background="?default_bar_color"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/song_current_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:gravity="center_vertical|left|end"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Title"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/song_total_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:fontFamily="sans-serif"
|
||||
android:gravity="center_vertical|right|end"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Title"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/footer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?default_bar_color"
|
||||
android:elevation="@dimen/toolbar_elevation"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp"
|
||||
android:transitionName="@string/transition_album_text"
|
||||
tools:ignore="UnusedAttribute">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/song_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Title"
|
||||
android:textColor="?attr/title_text_color" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/song_artist"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="sans-serif"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Caption"
|
||||
android:textColor="?attr/caption_text_color" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:background="?music_controller_container_color"
|
||||
android:id="@+id/media_controller_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="88dp"
|
||||
tools:ignore="ContentDescription,UnusedAttribute">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/prev_button"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="-8dp"
|
||||
android:layout_marginRight="-8dp"
|
||||
android:layout_toLeftOf="@+id/fab"
|
||||
android:layout_toStartOf="@+id/fab"
|
||||
android:background="?round_selector"
|
||||
android:padding="22dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_skip_previous_white_48dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/next_button"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="-8dp"
|
||||
android:layout_marginStart="-8dp"
|
||||
android:layout_toEndOf="@+id/fab"
|
||||
android:layout_toRightOf="@+id/fab"
|
||||
android:background="?round_selector"
|
||||
android:padding="22dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_skip_next_white_48dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/repeat_button"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:background="?round_selector"
|
||||
android:padding="22dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_repeat_white_48dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/shuffle_button"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:background="?round_selector"
|
||||
android:padding="22dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_shuffle_white_48dp" />
|
||||
|
||||
<com.melnykov.fab.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_centerInParent="true" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<SeekBar
|
||||
android:id="@+id/progress_slider"
|
||||
style="@style/MusicProgressSlider"
|
||||
android:elevation="2dp"
|
||||
tools:ignore="UnusedAttribute" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<!-- ALBUMART-->
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@id/footer_frame"
|
||||
android:layout_below="@id/toolbar_frame"
|
||||
android:background="@color/black">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/album_art_background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<com.kabouzeid.gramophone.views.HeightAndWidthFitSquarePlaceLeftRightImageView
|
||||
android:id="@+id/album_art"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/default_album_art"
|
||||
android:transitionName="@string/transition_album_cover"
|
||||
tools:ignore="ContentDescription,UnusedAttribute" />
|
||||
android:background="#00000000" />
|
||||
</FrameLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -47,18 +46,9 @@
|
|||
android:textColor="?android:textColorSecondary"
|
||||
android:textSize="@dimen/empty_text_size" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="right|bottom|end"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:ignore="RtlHardcoded">
|
||||
|
||||
<com.melnykov.fab.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_margin="16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_margin="16dp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
|
@ -2,7 +2,8 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/status_bar_padding">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@
|
|||
android:background="#00000000"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<com.melnykov.fab.FloatingActionButton
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_gravity="bottom|right|end"
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@
|
|||
<style name="Theme.MaterialMusic.Notification.Title" parent="@android:style/TextAppearance.Material.Notification.Title" />
|
||||
|
||||
<style name="PlayPauseFab" parent="PlayPauseFabParent">
|
||||
<item name="android:elevation">8dp</item>
|
||||
<item name="android:transitionName">@string/transition_fab</item>
|
||||
</style>
|
||||
|
||||
|
|
@ -29,7 +28,6 @@
|
|||
</style>
|
||||
|
||||
<style name="MusicProgressSlider" parent="MusicProgressSliderParent">
|
||||
<item name="android:progressBackgroundTint">#00000000</item>
|
||||
<item name="android:elevation">2dp</item>
|
||||
<item name="android:padding">0dp</item>
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<resources>
|
||||
|
||||
<array name="colors_primary">
|
||||
<item>#3F51B5</item>
|
||||
<item>#9E9E9E</item>
|
||||
<item>#424242</item>
|
||||
<item>#1C1C1C</item>
|
||||
|
|
@ -13,6 +12,7 @@
|
|||
<item>#E91E63</item>
|
||||
<item>#9C27B0</item>
|
||||
<item>#5E35B1</item>
|
||||
<item>#3F51B5</item>
|
||||
<item>#1976D2</item>
|
||||
<item>#03A9F4</item>
|
||||
<item>#00BCD4</item>
|
||||
|
|
@ -33,6 +33,7 @@
|
|||
<item>#795548</item>
|
||||
<item>#D32F2F</item>
|
||||
<item>#E91E63</item>
|
||||
<item>#FF4081</item>
|
||||
<item>#9C27B0</item>
|
||||
<item>#5E35B1</item>
|
||||
<item>#1976D2</item>
|
||||
|
|
|
|||
|
|
@ -25,8 +25,4 @@
|
|||
|
||||
<attr name="toolbarPopupTheme" format="reference" />
|
||||
|
||||
<declare-styleable name="ScrimInsetsView">
|
||||
<attr name="insetForeground" format="reference|color" />
|
||||
</declare-styleable>
|
||||
|
||||
</resources>
|
||||
|
|
@ -8,27 +8,18 @@
|
|||
<color name="activated_selected_light" type="color">#3e000000</color>
|
||||
|
||||
<!--light theme-->
|
||||
<color name="materialmusic_color">@color/indigo_500</color>
|
||||
<color name="materialmusic_color_darker">@color/indigo_600</color>
|
||||
<color name="materialmusic_accent_color">@color/pink_500</color>
|
||||
<color name="materialmusic_accent_color_darker">@color/pink_600</color>
|
||||
<color name="materialmusic_music_controller_container_color">@color/grey_300</color>
|
||||
<color name="materialmusic_navigation_drawer_background_color">#fff</color>
|
||||
<color name="materialmusic_separator_color">#0C000000</color>
|
||||
<color name="materialmusic_default_bar_color">@color/grey_500</color>
|
||||
<color name="materialmusic_themed_drawable_color">#8A000000</color>
|
||||
<color name="list_item_selector_activated">#D0D0D0</color>
|
||||
|
||||
<!--dark theme-->
|
||||
<color name="materialmusic_dark_color">@color/indigo_500</color>
|
||||
<color name="materialmusic_dark_color_darker">@color/indigo_600</color>
|
||||
<color name="materialmusic_dark_accent_color">@color/pink_500</color>
|
||||
<color name="materialmusic_dark_music_controller_container_color">@color/grey_800</color>
|
||||
<color name="materialmusic_dark_navigation_drawer_background_color">@color/grey_900</color>
|
||||
<color name="materialmusic_dark_separator_color">#0CFFFFFF</color>
|
||||
<color name="materialmusic_dark_default_bar_color">@color/grey_900</color>
|
||||
<color name="materialmusic_dark_themed_drawable_color">@color/white</color>
|
||||
<color name="list_item_selector_activated_dark">#55000000</color>
|
||||
|
||||
<color name="sliding_tabs_activated">#FFFFFF</color>
|
||||
<color name="sliding_tabs_deactivated">#99FFFFFF</color>
|
||||
|
|
@ -36,6 +27,4 @@
|
|||
<!--notification-->
|
||||
<drawable name="notification_template_divider_media">#29ffffff</drawable>
|
||||
|
||||
<color name="scrim_inset_color">#40000000</color>
|
||||
|
||||
</resources>
|
||||
|
|
@ -12,7 +12,8 @@
|
|||
<dimen name="toolbar_elevation">2dp</dimen>
|
||||
|
||||
<dimen name="header_image_height">360dp</dimen>
|
||||
<dimen name="progress_container_height">32dp</dimen>
|
||||
<dimen name="progress_container_height">20dp</dimen>
|
||||
<dimen name="media_controller_container_height">120dp</dimen>
|
||||
|
||||
<dimen name="status_bar_padding">0dp</dimen>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!-- https://gist.github.com/kalehv/bae765c756e94455ed88 -->
|
||||
<resources>
|
||||
|
||||
<color name="pink_500">#e91e63</color>
|
||||
<color name="pink_600">#d81b60</color>
|
||||
<color name="pink_A200">#ff4081</color>
|
||||
|
||||
<color name="indigo_500">#3f51b5</color>
|
||||
<color name="indigo_600">#3949ab</color>
|
||||
|
||||
<color name="black">#000000</color>
|
||||
<color name="white">#ffffff</color>
|
||||
|
|
|
|||
|
|
@ -115,6 +115,8 @@
|
|||
<string name="pref_title_colored_navigation_bar_tag_editor">Tag editor</string>
|
||||
<string name="pref_title_colored_navigation_bar_other_screens">Everywhere else</string>
|
||||
<string name="pref_title_colored_album_footers">Colored album footers</string>
|
||||
<string name="pref_title_force_square_album_art">Force square album art</string>
|
||||
<string name="pref_title_opaque_toolbar_now_playing">Opaque toolbar now playing</string>
|
||||
<string name="no_equalizer">No equalizer found</string>
|
||||
<string name="no_audio_ID">No audio ID, play something and try again.</string>
|
||||
<string name="navigation_drawer_open">Open navigation drawer</string>
|
||||
|
|
@ -136,6 +138,8 @@
|
|||
<string name="pref_only_lollipop">Only available on Lollipop.</string>
|
||||
<string name="pref_summary_transparent_toolbar">Content scrolling underneath the toolbar is visible.</string>
|
||||
<string name="pref_summary_colored_album_footers">Album footers in the grid are colored with the album cover\'s palette.</string>
|
||||
<string name="pref_summary_force_square_album_art">Album art in the now playing view is forced to be squared.</string>
|
||||
<string name="pref_summary_opaque_toolbar_now_playing">The toolbar in the now playing view is opaque and no longer covers the album art.</string>
|
||||
<string name="failed_download_albumart">Unable to download the art for this album.</string>
|
||||
<string name="search_hint">Search your library…</string>
|
||||
<string name="rescanning_media">Rescanning media…</string>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@
|
|||
|
||||
<style name="MusicProgressSlider" parent="MusicProgressSliderParent">
|
||||
<item name="android:thumbOffset">0dp</item>
|
||||
<item name="android:thumb">@drawable/slider_thumb</item>
|
||||
</style>
|
||||
|
||||
<style name="Toolbar">
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@
|
|||
</style>
|
||||
|
||||
<style name="PlayPauseFabParent">
|
||||
<item name="elevation">8dp</item>
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
</style>
|
||||
|
|
@ -81,7 +80,9 @@
|
|||
|
||||
|
||||
<style name="MusicProgressSliderParent">
|
||||
<item name="android:layout_width">fill_parent</item>
|
||||
<item name="android:progressDrawable">@android:color/transparent</item>
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:thumb">@drawable/slider_thumb</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
@ -30,6 +30,22 @@
|
|||
android:layout="@layout/preference_custom"
|
||||
android:widgetLayout="@layout/preference_dynamiccheckbox" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="opaque_toolbar_now_playing"
|
||||
android:title="@string/pref_title_opaque_toolbar_now_playing"
|
||||
android:summary="@string/pref_summary_opaque_toolbar_now_playing"
|
||||
android:layout="@layout/preference_custom"
|
||||
android:widgetLayout="@layout/preference_dynamiccheckbox" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="force_square_album_art"
|
||||
android:title="@string/pref_title_force_square_album_art"
|
||||
android:summary="@string/pref_summary_force_square_album_art"
|
||||
android:layout="@layout/preference_custom"
|
||||
android:widgetLayout="@layout/preference_dynamiccheckbox" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="colored_album_footers"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue