make the contact images more colorful

This commit is contained in:
tibbi 2020-04-10 23:36:44 +02:00
parent 584fc7ca81
commit d8080848c6
6 changed files with 55 additions and 4 deletions

View File

@ -1,10 +1,16 @@
package com.simplemobiletools.smsmessenger.adapters
import android.graphics.Typeface
import android.graphics.drawable.BitmapDrawable
import android.net.Uri
import android.view.Menu
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
import com.bumptech.glide.request.RequestOptions
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.extensions.formatDateOrTime
@ -14,6 +20,8 @@ import com.simplemobiletools.commons.views.MyRecyclerView
import com.simplemobiletools.smsmessenger.R
import com.simplemobiletools.smsmessenger.activities.SimpleActivity
import com.simplemobiletools.smsmessenger.extensions.deleteThread
import com.simplemobiletools.smsmessenger.extensions.getNameLetter
import com.simplemobiletools.smsmessenger.extensions.getNotificationLetterIcon
import com.simplemobiletools.smsmessenger.helpers.refreshMessages
import com.simplemobiletools.smsmessenger.models.Message
import kotlinx.android.synthetic.main.item_message.view.*
@ -104,6 +112,13 @@ class MessagesAdapter(
}
}
override fun onViewRecycled(holder: ViewHolder) {
super.onViewRecycled(holder)
if (!activity.isDestroyed && !activity.isFinishing) {
Glide.with(activity).clear(holder.itemView.message_image)
}
}
private fun setupView(view: View, message: Message) {
view.apply {
message_frame.isSelected = selectedKeys.contains(message.id)
@ -125,6 +140,22 @@ class MessagesAdapter(
arrayListOf<TextView>(message_address, message_body_short, message_date).forEach {
it.setTextColor(textColor)
}
val participant = message.participants.first()
val uri = Uri.parse(participant.photoUri)
val placeholder = BitmapDrawable(activity.resources, activity.getNotificationLetterIcon(participant.name.getNameLetter()))
val options = RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.error(placeholder)
.centerCrop()
Glide.with(context)
.load(uri)
.transition(DrawableTransitionOptions.withCrossFade())
.placeholder(placeholder)
.apply(options)
.apply(RequestOptions.circleCropTransform())
.into(message_image)
}
}
}

View File

@ -30,6 +30,7 @@ import com.simplemobiletools.smsmessenger.R
import com.simplemobiletools.smsmessenger.activities.ThreadActivity
import com.simplemobiletools.smsmessenger.helpers.Config
import com.simplemobiletools.smsmessenger.helpers.THREAD_ID
import com.simplemobiletools.smsmessenger.helpers.letterBackgroundColors
import com.simplemobiletools.smsmessenger.models.Contact
import com.simplemobiletools.smsmessenger.models.Message
import com.simplemobiletools.smsmessenger.models.MessageAttachment
@ -488,8 +489,9 @@ fun Context.getNotificationLetterIcon(letter: String): Bitmap {
val view = TextView(this)
view.layout(0, 0, size, size)
val charValue = letter.toCharArray().first().toInt()
val circlePaint = Paint().apply {
color = getAdjustedPrimaryColor()
color = letterBackgroundColors[charValue % letterBackgroundColors.size].toInt()
isAntiAlias = true
}

View File

@ -1,6 +1,7 @@
package com.simplemobiletools.smsmessenger.extensions
import com.simplemobiletools.commons.extensions.normalizeString
import java.util.*
// get the contact names first letter at showing the placeholder without image
fun String.getNameLetter() = normalizeString().toCharArray().getOrNull(0)?.toString() ?: "S"
fun String.getNameLetter() = normalizeString().toCharArray().getOrNull(0)?.toString()?.toUpperCase(Locale.getDefault()) ?: "S"

View File

@ -19,3 +19,17 @@ const val MESSAGE_ADDRESS = "message_address"
fun refreshMessages() {
EventBus.getDefault().post(Events.RefreshMessages())
}
// most app icon colors from md_app_icon_colors with reduced alpha
val letterBackgroundColors = arrayListOf(
0xCCD32F2F,
0xCCC2185B,
0xCC1976D2,
0xCC0288D1,
0xCC0097A7,
0xCC00796B,
0xCC388E3C,
0xCC689F38,
0xCCF57C00,
0xCCE64A19
)

View File

@ -1,5 +1,6 @@
package com.simplemobiletools.smsmessenger.models
import android.graphics.Bitmap
import android.provider.Telephony
import com.simplemobiletools.smsmessenger.extensions.getThreadTitle
@ -10,4 +11,6 @@ data class Message(
fun isReceivedMessage() = type == Telephony.Sms.MESSAGE_TYPE_INBOX
fun getThreadTitle() = participants.getThreadTitle()
fun getThreadImageUri() = participants.firstOrNull()?.photoUri
}

View File

@ -18,8 +18,8 @@
<ImageView
android:id="@+id/message_image"
android:layout_width="@dimen/avatar_size"
android:layout_height="@dimen/avatar_size"
android:layout_width="@dimen/normal_icon_size"
android:layout_height="@dimen/normal_icon_size"
android:layout_alignTop="@+id/message_address"
android:layout_alignBottom="@+id/message_date"
android:layout_centerVertical="true"