diff options
Diffstat (limited to 'app/src/main/java/mygram/droid/TileAdapter.java')
| -rw-r--r-- | app/src/main/java/mygram/droid/TileAdapter.java | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/app/src/main/java/mygram/droid/TileAdapter.java b/app/src/main/java/mygram/droid/TileAdapter.java index cf80f51..5e53109 100644 --- a/app/src/main/java/mygram/droid/TileAdapter.java +++ b/app/src/main/java/mygram/droid/TileAdapter.java @@ -16,6 +16,7 @@ package mygram.droid; import android.content.Context; import android.graphics.Color; +import android.graphics.drawable.GradientDrawable; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -35,6 +36,8 @@ final class TileAdapter extends RecyclerView.Adapter<TileAdapter.Holder> { final String image, label; final int icon, postId; final Runnable click; + /** Photo or video mark in the top left; 0 for none. */ + int badge; /** image or icon is shown; postId is -1 for tiles that are not posts. */ Tile(String image, String label, int icon, int postId, Runnable click) { @@ -47,18 +50,21 @@ final class TileAdapter extends RecyclerView.Adapter<TileAdapter.Holder> { } static Tile post(Post p, Runnable click) { - return new Tile(p.media.get(0).thumbnailUrl, null, 0, p.id, click); + Tile t = new Tile(p.media.get(0).thumbnailUrl, null, 0, p.id, click); + t.badge = p.media.get(0).video ? R.drawable.ic_videocam : R.drawable.ic_photo; + return t; } static final class Holder extends RecyclerView.ViewHolder { - final ImageView image, heart; + final ImageView image, heart, badge; final TextView label; - Holder(View v, ImageView image, TextView label, ImageView heart) { + Holder(View v, ImageView image, TextView label, ImageView heart, ImageView badge) { super(v); this.image = image; this.label = label; this.heart = heart; + this.badge = badge; } } @@ -97,8 +103,19 @@ final class TileAdapter extends RecyclerView.Adapter<TileAdapter.Holder> { FrameLayout.LayoutParams hp = new FrameLayout.LayoutParams(s, s, Gravity.TOP | Gravity.END); hp.setMargins(p, p, p, p); frame.addView(heart, hp); + ImageView badge = new ImageView(c); + GradientDrawable dot = new GradientDrawable(); + dot.setShape(GradientDrawable.OVAL); + dot.setColor(0x80000000); // readable on bright thumbnails + badge.setBackground(dot); + int bp = Ui.dp(c, 4); + badge.setPadding(bp, bp, bp, bp); + int bs = Ui.dp(c, 26); + FrameLayout.LayoutParams bl = new FrameLayout.LayoutParams(bs, bs, Gravity.TOP | Gravity.START); + bl.setMargins(p, p, p, p); + frame.addView(badge, bl); Ui.focusable(frame); - return new Holder(frame, image, label, heart); + return new Holder(frame, image, label, heart, badge); } @Override @@ -116,6 +133,9 @@ final class TileAdapter extends RecyclerView.Adapter<TileAdapter.Holder> { } h.label.setText(t.label); h.label.setVisibility(t.label == null ? View.GONE : View.VISIBLE); + h.badge.setVisibility(t.badge == 0 ? View.GONE : View.VISIBLE); + h.badge.setImageResource(t.badge); + h.badge.setContentDescription(t.badge == R.drawable.ic_videocam ? "Video" : "Photo"); h.heart.setVisibility(t.postId >= 0 && Likes.has(t.postId) ? View.VISIBLE : View.GONE); h.itemView.setContentDescription(t.label != null ? t.label : "Post"); h.itemView.setOnClickListener(v -> t.click.run()); |
