added rectangle with first character
authortobiasKaminsky <tobias@kaminsky.me>
Tue, 26 May 2015 18:49:03 +0000 (20:49 +0200)
committertobiasKaminsky <tobias@kaminsky.me>
Tue, 26 May 2015 18:49:03 +0000 (20:49 +0200)
res/drawable/radiobutton_avatar.xml [new file with mode: 0644]
src/com/owncloud/android/ui/TextDrawable.java [new file with mode: 0644]
src/com/owncloud/android/ui/adapter/NavigationDrawerListAdapter.java

diff --git a/res/drawable/radiobutton_avatar.xml b/res/drawable/radiobutton_avatar.xml
new file mode 100644 (file)
index 0000000..ab7934b
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <size android:width="20dp"
+        android:height="20dp" />
+    <solid android:color="@android:color/black"/>
+</shape>
\ No newline at end of file
diff --git a/src/com/owncloud/android/ui/TextDrawable.java b/src/com/owncloud/android/ui/TextDrawable.java
new file mode 100644 (file)
index 0000000..ae5be54
--- /dev/null
@@ -0,0 +1,82 @@
+package com.owncloud.android.ui;
+
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
+import android.graphics.Paint;
+import android.graphics.PixelFormat;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+
+/**
+ * Created by tobi on 24.05.15.
+ */
+public class TextDrawable extends Drawable {
+
+    private final String text;
+    private final Integer color;
+    private final Float size;
+
+    public TextDrawable(String text, int r, int g, int b, float size) {
+
+        this.text = text;
+        this.color = Color.rgb(r, g, b);
+        this.size = size;
+
+//        this.paint = new Paint();
+////        paint.setColor(Color.BLACK);
+////        paint.setTextSize(18f);
+////        paint.setAntiAlias(true);
+////        paint.setFakeBoldText(true);
+//
+////        paint.setARGB(255, r, g, b);
+////        paint.setStyle(Paint.Style.FILL);
+////        paint.setTextAlign(Paint.Align.CENTER);
+//
+//
+//        paint.setColor(Color.BLACK);
+//        paint.setTextSize(22f);
+//        paint.setAntiAlias(true);
+//        paint.setFakeBoldText(true);
+//        paint.setTextAlign(Paint.Align.CENTER);
+    }
+
+    @Override
+    public void draw(Canvas canvas) {
+        // TODO Paint in Constructor
+        Paint bg = new Paint();
+        bg.setStyle(Paint.Style.FILL);
+        bg.setColor(color);
+        canvas.drawRect(0,-20,20,40,bg);
+
+        Paint paint = new Paint();
+        paint.setColor(Color.WHITE);
+        paint.setTextSize(20);
+        paint.setAntiAlias(true);
+        paint.setFakeBoldText(true);
+//        paint.setTextAlign(Paint.Align.CENTER);
+
+        Rect bounds = new Rect();
+        paint.getTextBounds(text, 0, text.length(), bounds);
+        int x = (canvas.getWidth() / 2) - (bounds.width() / 2);
+        int y = (canvas.getHeight() / 2) - (bounds.height() / 2);
+
+//        canvas.drawText(text, x, y, paint);
+        canvas.drawText(text, 4, 6, paint);
+    }
+
+    @Override
+    public void setAlpha(int alpha) {
+//        paint.setAlpha(alpha);
+    }
+
+    @Override
+    public void setColorFilter(ColorFilter cf) {
+//        paint.setColorFilter(cf);
+    }
+
+    @Override
+    public int getOpacity() {
+        return PixelFormat.TRANSLUCENT;
+    }
+}
index f9a73a3..a88ecbc 100644 (file)
@@ -7,7 +7,15 @@ import java.util.ArrayList;
 import android.accounts.Account;
 import android.accounts.AccountManager;
 import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
 import android.graphics.Color;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.ShapeDrawable;
+import android.graphics.drawable.shapes.RectShape;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -21,6 +29,7 @@ import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.ui.TextDrawable;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.utils.BitmapUtils;
 
@@ -104,7 +113,13 @@ public class NavigationDrawerListAdapter extends BaseAdapter {
 
                 for (Account account : mAccounts) {
                     RadioButton rb = new RadioButton(mContext);
+
                     rb.setText(account.name);
+                    rb.setTextColor(Color.BLACK);
+                    rb.setEllipsize(TextUtils.TruncateAt.MIDDLE);
+                    rb.setSingleLine();
+                    rb.setCompoundDrawablePadding(30);
+
 
                     try {
                         // using adapted algorithm from /core/js/placeholder.js:50
@@ -118,12 +133,17 @@ public class NavigationDrawerListAdapter extends BaseAdapter {
                         double maxRange = java.lang.Integer.MAX_VALUE;
                         float hue = (float) (seedMd5Int / maxRange * 360);
 
-                        Log_OC.d(TAG, "hue: " + hue);
+                        int[] rgb = BitmapUtils.HSLtoRGB(hue, 90.0f, 65.0f, 1.0f);
 
+//                        Drawable drawable = MainApp.getAppContext().getResources().getDrawable(R.drawable.radiobutton_avatar);
+//                        drawable.setColorFilter(Color.rgb(rgb[0], rgb[1], rgb[2]), PorterDuff.Mode.SRC_ATOP);
+
+
+
+                        TextDrawable text = new TextDrawable(username.substring(0, 1).toUpperCase(), rgb[0], rgb[1], rgb[2], rb.getTextSize());
+
+                        rb.setCompoundDrawablesWithIntrinsicBounds(text, null, null, null);
 
-                        int[] rgb = BitmapUtils.HSLtoRGB(hue, 90.0f, 65.0f, 1.0f);
-                        rb.setTextColor(Color.rgb(rgb[0], rgb[1], rgb[2]));
-                        Log_OC.d(TAG, "Color: " + rgb[0] + " " + rgb[1] + " " + rgb[2]);
 
                     } catch (Exception e){
                         Log_OC.d(TAG, e.toString());