Great progress with the new now playing screen. Almost done now.

This commit is contained in:
Karim Abou Zeid 2015-12-12 01:16:48 +01:00
commit 0de4590a87
32 changed files with 261 additions and 103 deletions

View file

@ -35,7 +35,7 @@ public abstract class AbsMultiSelectAdapter<VH extends RecyclerView.ViewHolder,
this.menuRes = menuRes;
}
protected void toggleChecked(final int position) {
protected boolean toggleChecked(final int position) {
if (cabHolder != null) {
openCabIfNecessary();
@ -47,7 +47,10 @@ public abstract class AbsMultiSelectAdapter<VH extends RecyclerView.ViewHolder,
if (size <= 0) cab.finish();
else if (size == 1) cab.setTitle(checked.get(0).toString());
else if (size > 1) cab.setTitle(context.getString(R.string.x_selected, size));
return true;
}
return false;
}
private void openCabIfNecessary() {

View file

@ -16,7 +16,7 @@ import butterknife.ButterKnife;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public abstract class MediaEntryViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
public class MediaEntryViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
@Nullable
@Bind(R.id.image)
public ImageView image;

View file

@ -15,20 +15,75 @@ import java.util.ArrayList;
* @author Karim Abou Zeid (kabouzeid)
*/
public class PlayingQueueAdapter extends SongAdapter {
private static final int HISTORY = 0;
private static final int CURRENT = 1;
private static final int UP_NEXT = 2;
private int current;
public PlayingQueueAdapter(AppCompatActivity activity, ArrayList<Song> dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) {
super(activity, dataSet, itemLayoutRes, usePalette, cabHolder);
}
@Override
protected SongAdapter.ViewHolder createViewHolder(View view) {
return new ViewHolder(view);
public void onBindViewHolder(@NonNull SongAdapter.ViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
if (holder.imageText != null) {
holder.imageText.setVisibility(View.VISIBLE);
holder.imageText.setText("" + (position - current));
}
if (holder.image != null) {
holder.image.setVisibility(View.GONE);
}
if (holder.getItemViewType() == HISTORY) {
setAlpha(holder, 0.5f);
} else if (holder.getItemViewType() == CURRENT) {
holder.itemView.setActivated(true);
}
}
public class ViewHolder extends SongAdapter.ViewHolder {
@Override
public int getItemViewType(int position) {
if (position < current) {
return HISTORY;
} else if (position > current) {
return UP_NEXT;
}
return CURRENT;
}
public ViewHolder(@NonNull View itemView) {
super(itemView);
image = null;
@Override
protected void loadAlbumCover(Song song, ViewHolder holder) {
//super.loadAlbumCover(song, holder);
}
public void swapDataSet(ArrayList<Song> dataSet, int position) {
this.dataSet = dataSet;
current = position;
notifyDataSetChanged();
}
public void setCurrent(int current) {
this.current = current;
notifyDataSetChanged();
}
protected void setAlpha(SongAdapter.ViewHolder holder, float alpha) {
if (holder.image != null) {
holder.image.setAlpha(alpha);
}
if (holder.title != null) {
holder.title.setAlpha(alpha);
}
if (holder.text != null) {
holder.text.setAlpha(alpha);
}
if (holder.imageText != null) {
holder.imageText.setAlpha(alpha);
}
if (holder.paletteColorContainer != null) {
holder.paletteColorContainer.setAlpha(alpha);
}
}
}

View file

@ -93,8 +93,7 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
final Song song = dataSet.get(position);
final int defaultBarColor = ColorUtil.resolveColor(activity, R.attr.default_bar_color);
setColors(defaultBarColor, holder);
setColors(ColorUtil.resolveColor(activity, R.attr.default_bar_color), holder);
boolean isChecked = isChecked(song);
holder.itemView.setActivated(isChecked);
@ -108,40 +107,9 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
if (holder.text != null) {
holder.text.setText(getSongText(song));
}
if (holder.image != null) {
ImageLoader.getInstance().displayImage(
getSongImageLoaderUri(song),
holder.image,
new DisplayImageOptions.Builder()
.cacheInMemory(true)
.showImageOnFail(R.drawable.default_album_art)
.resetViewBeforeLoading(true)
.postProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
holder.paletteColor = ColorUtil.generateColor(activity, bitmap);
return bitmap;
}
})
.displayer(new FadeInBitmapDisplayer(FADE_IN_TIME, true, true, false) {
@Override
public void display(Bitmap bitmap, ImageAware imageAware, LoadedFrom loadedFrom) {
super.display(bitmap, imageAware, loadedFrom);
if (usePalette)
setColors(holder.paletteColor, holder);
}
})
.build(),
new SimpleImageLoadingListener() {
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
FadeInBitmapDisplayer.animate(view, FADE_IN_TIME);
if (usePalette)
setColors(defaultBarColor, holder);
}
}
);
}
loadAlbumCover(song, holder);
}
private void setColors(int color, ViewHolder holder) {
@ -156,6 +124,42 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
}
}
protected void loadAlbumCover(Song song, final ViewHolder holder) {
if (holder.image == null) return;
ImageLoader.getInstance().displayImage(
getSongImageLoaderUri(song),
holder.image,
new DisplayImageOptions.Builder()
.cacheInMemory(true)
.showImageOnFail(R.drawable.default_album_art)
.resetViewBeforeLoading(true)
.postProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
holder.paletteColor = ColorUtil.generateColor(activity, bitmap);
return bitmap;
}
})
.displayer(new FadeInBitmapDisplayer(FADE_IN_TIME, true, true, false) {
@Override
public void display(Bitmap bitmap, ImageAware imageAware, LoadedFrom loadedFrom) {
super.display(bitmap, imageAware, loadedFrom);
if (usePalette)
setColors(holder.paletteColor, holder);
}
})
.build(),
new SimpleImageLoadingListener() {
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
FadeInBitmapDisplayer.animate(view, FADE_IN_TIME);
if (usePalette)
setColors(ColorUtil.resolveColor(activity, R.attr.default_bar_color), holder);
}
}
);
}
protected String getSongTitle(Song song) {
return song.title;
}
@ -254,8 +258,7 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
@Override
public boolean onLongClick(View view) {
toggleChecked(getAdapterPosition());
return true;
return toggleChecked(getAdapterPosition());
}
}
}