diff --git a/build.gradle b/build.gradle
index 1800064c47..c43968bb74 100644
--- a/build.gradle
+++ b/build.gradle
@@ -44,7 +44,7 @@ dependencies {
compile 'org.w3c:smil:1.0.0'
compile 'org.apache.httpcomponents:httpclient-android:4.3.5'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
- compile 'com.github.bumptech.glide:glide:3.6.0'
+ compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'com.makeramen:roundedimageview:2.1.0'
compile 'com.pnikosis:materialish-progress:1.5'
compile 'de.greenrobot:eventbus:2.4.0'
@@ -108,7 +108,7 @@ dependencyVerification {
'org.w3c:smil:085dc40f2bb249651578bfa07499fd08b16ad0886dbe2c4078586a408da62f9b',
'org.apache.httpcomponents:httpclient-android:6f56466a9bd0d42934b90bfbfe9977a8b654c058bf44a12bdc2877c4e1f033f1',
'com.github.chrisbanes.photoview:library:8b5344e206f125e7ba9d684008f36c4992d03853c57e5814125f88496126e3cc',
- 'com.github.bumptech.glide:glide:adf657e6bddccb168a29e18ab0954043af46a9b5c736d8c3193c9783fd83d69e',
+ 'com.github.bumptech.glide:glide:4718ac4c57ebabe56e673dc3265950b9dbf940d1c43c0adc363e8b95c0abdf75',
'com.makeramen:roundedimageview:1f5a1865796b308c6cdd114acc6e78408b110f0a62fc63553278fbeacd489cd1',
'com.pnikosis:materialish-progress:d71d80e00717a096784482aee21001a9d299fec3833e4ebd87739ed36cf77c54',
'de.greenrobot:eventbus:61d743a748156a372024d083de763b9e91ac2dcb3f6a1cbc74995c7ddab6e968',
diff --git a/res/layout/conversation_activity.xml b/res/layout/conversation_activity.xml
index 6912cfa44d..fde6002d97 100644
--- a/res/layout/conversation_activity.xml
+++ b/res/layout/conversation_activity.xml
@@ -55,8 +55,8 @@
android:id="@+id/attachment_thumbnail"
android:layout_width="230dp"
android:layout_height="150dp"
- app:riv_corner_radius="3dp"
- android:contentDescription="@string/conversation_activity__attachment_thumbnail"/>
+ android:contentDescription="@string/conversation_activity__attachment_thumbnail"
+ app:backgroundColorHint="?conversation_background" />
diff --git a/res/layout/conversation_item_sent.xml b/res/layout/conversation_item_sent.xml
index 9d7fb0ad52..027283cc4d 100644
--- a/res/layout/conversation_item_sent.xml
+++ b/res/layout/conversation_item_sent.xml
@@ -65,8 +65,6 @@
android:adjustViewBounds="true"
android:contentDescription="@string/conversation_item__mms_image_description"
android:visibility="gone"
- app:riv_corner_radius="@dimen/message_bubble_corner_radius"
- app:riv_border_width="0dp"
tools:src="@drawable/ic_video_light"
tools:visibility="visible" />
diff --git a/res/layout/group_create_activity.xml b/res/layout/group_create_activity.xml
index 18133523b8..cb57ad4db4 100644
--- a/res/layout/group_create_activity.xml
+++ b/res/layout/group_create_activity.xml
@@ -25,7 +25,6 @@
android:layout_width="70dp"
android:layout_height="70dp"
position="bottom_right"
- app:riv_oval="true"
android:layout_marginRight="10dp"
android:src="@drawable/ic_group_photo"
android:contentDescription="@string/GroupCreateActivity_avatar_content_description" />
diff --git a/res/layout/thumbnail_view.xml b/res/layout/thumbnail_view.xml
index 739fae50f7..36116145d2 100644
--- a/res/layout/thumbnail_view.xml
+++ b/res/layout/thumbnail_view.xml
@@ -2,15 +2,13 @@
-
+
+
+
+
diff --git a/src/org/thoughtcrime/securesms/ConversationItem.java b/src/org/thoughtcrime/securesms/ConversationItem.java
index 5f931b0471..f7cad6b2f8 100644
--- a/src/org/thoughtcrime/securesms/ConversationItem.java
+++ b/src/org/thoughtcrime/securesms/ConversationItem.java
@@ -218,11 +218,12 @@ public class ConversationItem extends LinearLayout implements Recipient.Recipien
private void setBubbleState(MessageRecord messageRecord, Recipient recipient) {
if (messageRecord.isOutgoing()) {
bodyBubble.getBackground().setColorFilter(defaultBubbleColor, PorterDuff.Mode.MULTIPLY);
+ mediaThumbnail.setBackgroundColorHint(defaultBubbleColor);
} else {
- bodyBubble.getBackground().setColorFilter(recipient.getColor().toConversationColor(context),
- PorterDuff.Mode.MULTIPLY);
+ int color = recipient.getColor().toConversationColor(context);
+ bodyBubble.getBackground().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
+ mediaThumbnail.setBackgroundColorHint(color);
}
-
}
private void setSelectionBackgroundDrawables(MessageRecord messageRecord) {
diff --git a/src/org/thoughtcrime/securesms/components/ImageDivet.java b/src/org/thoughtcrime/securesms/components/ImageDivet.java
index 987cf3a1fa..770226b835 100644
--- a/src/org/thoughtcrime/securesms/components/ImageDivet.java
+++ b/src/org/thoughtcrime/securesms/components/ImageDivet.java
@@ -7,11 +7,9 @@ import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
-import com.makeramen.roundedimageview.RoundedImageView;
-
import org.thoughtcrime.securesms.R;
-public class ImageDivet extends RoundedImageView {
+public class ImageDivet extends ImageView {
private static final float CORNER_OFFSET = 12F;
private static final String[] POSITIONS = new String[] {"bottom_right"};
diff --git a/src/org/thoughtcrime/securesms/components/ThumbnailView.java b/src/org/thoughtcrime/securesms/components/ThumbnailView.java
index b5c6c5d3ca..9191d3ddf4 100644
--- a/src/org/thoughtcrime/securesms/components/ThumbnailView.java
+++ b/src/org/thoughtcrime/securesms/components/ThumbnailView.java
@@ -3,7 +3,8 @@ package org.thoughtcrime.securesms.components;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
-import android.graphics.Bitmap;
+import android.content.res.TypedArray;
+import android.graphics.Color;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.support.annotation.NonNull;
@@ -15,13 +16,16 @@ import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.FrameLayout;
+import android.widget.ImageView;
import com.bumptech.glide.DrawableTypeRequest;
import com.bumptech.glide.GenericRequestBuilder;
import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable;
+import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
-import com.makeramen.roundedimageview.RoundedImageView;
import com.pnikosis.materialishprogress.ProgressWheel;
import org.thoughtcrime.securesms.R;
@@ -32,6 +36,7 @@ import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.util.FutureTaskListener;
import org.thoughtcrime.securesms.util.ListenableFutureTask;
+import org.thoughtcrime.securesms.mms.RoundedCorners;
import org.thoughtcrime.securesms.util.Util;
import de.greenrobot.event.EventBus;
@@ -40,9 +45,11 @@ import ws.com.google.android.mms.pdu.PduPart;
public class ThumbnailView extends FrameLayout {
private static final String TAG = ThumbnailView.class.getSimpleName();
- private boolean showProgress = true;
- private RoundedImageView image;
- private ProgressWheel progress;
+ private boolean showProgress = true;
+ private ImageView image;
+ private ProgressWheel progress;
+ private int backgroundColorHint;
+ private int radius;
private ListenableFutureTask slideDeckFuture = null;
private SlideDeckListener slideDeckListener = null;
@@ -61,8 +68,15 @@ public class ThumbnailView extends FrameLayout {
public ThumbnailView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
inflate(context, R.layout.thumbnail_view, this);
- image = (RoundedImageView) findViewById(R.id.thumbnail_image);
- progress = (ProgressWheel) findViewById(R.id.progress_wheel);
+ radius = getResources().getDimensionPixelSize(R.dimen.message_bubble_corner_radius);
+ image = (ImageView) findViewById(R.id.thumbnail_image);
+ progress = (ProgressWheel) findViewById(R.id.progress_wheel);
+
+ if (attrs != null) {
+ TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs, R.styleable.ThumbnailView, 0, 0);
+ backgroundColorHint = typedArray.getColor(0, Color.BLACK);
+ typedArray.recycle();
+ }
}
@Override protected void onAttachedToWindow() {
@@ -80,13 +94,17 @@ public class ThumbnailView extends FrameLayout {
if (this.slide != null && event.partId.equals(this.slide.getPart().getPartId())) {
Util.runOnMain(new Runnable() {
@Override public void run() {
- progress.setInstantProgress(((float) event.progress) / event.total);
+ progress.setInstantProgress(((float)event.progress) / event.total);
if (event.progress >= event.total) animateOutProgress();
}
});
}
}
+ public void setBackgroundColorHint(int color) {
+ this.backgroundColorHint = color;
+ }
+
public void setImageResource(@Nullable MasterSecret masterSecret,
long id, long timestamp,
@NonNull ListenableFutureTask slideDeckFuture)
@@ -155,6 +173,7 @@ public class ThumbnailView extends FrameLayout {
private GenericRequestBuilder buildGlideRequest(@NonNull Slide slide,
@Nullable MasterSecret masterSecret)
{
+ Log.w(TAG, "slide type " + slide.getContentType());
final GenericRequestBuilder builder;
if (slide.getThumbnailUri() != null) {
builder = buildThumbnailGlideRequest(slide, masterSecret);
@@ -182,8 +201,7 @@ public class ThumbnailView extends FrameLayout {
if (masterSecret == null) request = Glide.with(getContext()).load(slide.getThumbnailUri());
else request = Glide.with(getContext()).load(new DecryptableUri(masterSecret, slide.getThumbnailUri()));
- return request.asBitmap()
- .fitCenter()
+ return request.transform(new RoundedCorners(getContext(), false, radius, backgroundColorHint))
.listener(new PduThumbnailSetListener(slide.getPart()));
}
@@ -192,9 +210,9 @@ public class ThumbnailView extends FrameLayout {
throw new IllegalStateException("null MasterSecret when loading non-draft thumbnail");
}
- return Glide.with(getContext()).load(new DecryptableUri(masterSecret, slide.getThumbnailUri()))
- .asBitmap()
- .centerCrop();
+ return Glide.with(getContext()).load(new DecryptableUri(masterSecret, slide.getThumbnailUri()))
+ .crossFade()
+ .transform(new RoundedCorners(getContext(), true, radius, backgroundColorHint));
}
private GenericRequestBuilder buildPlaceholderGlideRequest(Slide slide) {
@@ -282,7 +300,7 @@ public class ThumbnailView extends FrameLayout {
}
}
- private static class PduThumbnailSetListener implements RequestListener