diff options
Diffstat (limited to 'app/src/main/java/mygram/droid/Ui.java')
| -rw-r--r-- | app/src/main/java/mygram/droid/Ui.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/app/src/main/java/mygram/droid/Ui.java b/app/src/main/java/mygram/droid/Ui.java index 172fbff..6667d33 100644 --- a/app/src/main/java/mygram/droid/Ui.java +++ b/app/src/main/java/mygram/droid/Ui.java @@ -33,6 +33,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; + import java.util.ArrayList; import java.util.List; @@ -156,17 +158,42 @@ final class Ui { /** Back arrow and title, for screens outside the main view. */ static LinearLayout header(Activity a, String title) { + return header(a, title, null); + } + + /** Back arrow, the folder picture when there is one, and title. */ + static LinearLayout header(Activity a, String title, String avatarUrl) { LinearLayout header = new LinearLayout(a); header.setGravity(Gravity.CENTER_VERTICAL); int p = dp(a, 16); header.setPadding(p * 2, p, p * 2, 0); header.addView(iconButton(a, R.drawable.ic_arrow_back, "Back", v -> a.finish())); + ImageView avatar = avatar(a, 40); + ((LinearLayout.LayoutParams) avatar.getLayoutParams()).leftMargin = p; + header.addView(avatar); + setAvatar(avatar, avatarUrl); TextView t = text(a, title, 24); t.setPadding(p, 0, 0, 0); header.addView(t); return header; } + /** A round folder picture of size dp, for a horizontal LinearLayout. */ + static ImageView avatar(Context c, int size) { + ImageView v = new ImageView(c); + v.setLayoutParams(new LinearLayout.LayoutParams(dp(c, size), dp(c, size))); + return v; + } + + /** Loads url round, or hides the view when the folder has no picture. */ + static void setAvatar(ImageView v, String url) { + v.setVisibility(url == null ? View.GONE : View.VISIBLE); + if (url == null) + Glide.with(v).clear(v); + else + Glide.with(v).load(url).circleCrop().into(v); + } + static void blur(ImageView v, float radius) { v.setRenderEffect(RenderEffect.createBlurEffect(radius, radius, Shader.TileMode.CLAMP)); } |
