From 98f7cad19c330d6d7ce496772d1df0b057dc0b8c Mon Sep 17 00:00:00 2001 From: str4d Date: Tue, 18 Nov 2014 03:07:01 +0000 Subject: [PATCH] Better handling of identicon backgrounds --- .../delight/android/identicons/Identicon.java | 18 ++++++++++++++---- .../android/identicons/IdenticonBase.java | 7 ++++++- app/src/main/res/layout/contact_token.xml | 1 - .../main/res/layout/fragment_view_contact.xml | 1 - .../main/res/layout/fragment_view_identity.xml | 1 - 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/im/delight/android/identicons/Identicon.java b/app/src/main/java/im/delight/android/identicons/Identicon.java index 1da03610..a99e95f7 100644 --- a/app/src/main/java/im/delight/android/identicons/Identicon.java +++ b/app/src/main/java/im/delight/android/identicons/Identicon.java @@ -15,11 +15,11 @@ public class Identicon extends IdenticonBase { return 5; } - protected int getSymmetricColumnIndex(int row) { - if (row < CENTER_COLUMN_INDEX) { - return row; + protected int getSymmetricColumnIndex(int col) { + if (col < CENTER_COLUMN_INDEX) { + return col; } else { - return getColumnCount() - row - 1; + return getColumnCount() - col - 1; } } @@ -32,4 +32,14 @@ public class Identicon extends IdenticonBase { protected int getIconColor() { return Color.rgb(getByte(0) + 128, getByte(1) + 128, getByte(2) + 128); } + + @Override + protected int getBackgroundColor() { + float[] hsv = new float[3]; + Color.colorToHSV(getIconColor(), hsv); + if (hsv[2] < 0.5) + return Color.parseColor("#ffeeeeee"); // @color/background_material_light + else + return Color.parseColor("#ff303030"); // @color/background_material_dark + } } diff --git a/app/src/main/java/im/delight/android/identicons/IdenticonBase.java b/app/src/main/java/im/delight/android/identicons/IdenticonBase.java index 7d6f9040..bc090701 100644 --- a/app/src/main/java/im/delight/android/identicons/IdenticonBase.java +++ b/app/src/main/java/im/delight/android/identicons/IdenticonBase.java @@ -53,13 +53,14 @@ public abstract class IdenticonBase { protected void setupColors() { mColors = new int[mRowCount][mColumnCount]; int colorVisible = getIconColor(); + int colorInvisible = getBackgroundColor(); for (int r = 0; r < mRowCount; r++) { for (int c = 0; c < mColumnCount; c++) { if (isCellVisible(r, c)) { mColors[r][c] = colorVisible; } else { - mColors[r][c] = Color.TRANSPARENT; + mColors[r][c] = colorInvisible; } } } @@ -94,6 +95,10 @@ public abstract class IdenticonBase { abstract protected int getIconColor(); + protected int getBackgroundColor() { + return Color.TRANSPARENT; + } + public void updateSize(int w, int h) { mCellWidth = w / mColumnCount; mCellHeight = h / mRowCount; diff --git a/app/src/main/res/layout/contact_token.xml b/app/src/main/res/layout/contact_token.xml index c863ac33..a7fd3aa5 100644 --- a/app/src/main/res/layout/contact_token.xml +++ b/app/src/main/res/layout/contact_token.xml @@ -10,7 +10,6 @@ android:id="@+id/contact_picture" android:layout_width="@dimen/contact_chip_height" android:layout_height="@dimen/contact_chip_height" - android:background="@color/background_material_light" android:scaleType="centerCrop" android:src="@drawable/ic_contact_picture"/> diff --git a/app/src/main/res/layout/fragment_view_contact.xml b/app/src/main/res/layout/fragment_view_contact.xml index 00a61de1..8cc595c8 100644 --- a/app/src/main/res/layout/fragment_view_contact.xml +++ b/app/src/main/res/layout/fragment_view_contact.xml @@ -30,7 +30,6 @@ android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" - android:background="@color/background_material_light" android:scaleType="centerCrop" android:src="@drawable/ic_contact_picture"/> diff --git a/app/src/main/res/layout/fragment_view_identity.xml b/app/src/main/res/layout/fragment_view_identity.xml index d6ac5648..900d2aaf 100644 --- a/app/src/main/res/layout/fragment_view_identity.xml +++ b/app/src/main/res/layout/fragment_view_identity.xml @@ -30,7 +30,6 @@ android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" - android:background="@color/background_material_light" android:scaleType="centerCrop" android:src="@drawable/ic_contact_picture"/>