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 package com.simplemobiletools.smsmessenger.adapters
import android.graphics.Typeface import android.graphics.Typeface
import android.graphics.drawable.BitmapDrawable
import android.net.Uri
import android.view.Menu import android.view.Menu
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView 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.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.extensions.formatDateOrTime 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.R
import com.simplemobiletools.smsmessenger.activities.SimpleActivity import com.simplemobiletools.smsmessenger.activities.SimpleActivity
import com.simplemobiletools.smsmessenger.extensions.deleteThread 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.helpers.refreshMessages
import com.simplemobiletools.smsmessenger.models.Message import com.simplemobiletools.smsmessenger.models.Message
import kotlinx.android.synthetic.main.item_message.view.* 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) { private fun setupView(view: View, message: Message) {
view.apply { view.apply {
message_frame.isSelected = selectedKeys.contains(message.id) message_frame.isSelected = selectedKeys.contains(message.id)
@@ -125,6 +140,22 @@ class MessagesAdapter(
arrayListOf<TextView>(message_address, message_body_short, message_date).forEach { arrayListOf<TextView>(message_address, message_body_short, message_date).forEach {
it.setTextColor(textColor) 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.activities.ThreadActivity
import com.simplemobiletools.smsmessenger.helpers.Config import com.simplemobiletools.smsmessenger.helpers.Config
import com.simplemobiletools.smsmessenger.helpers.THREAD_ID import com.simplemobiletools.smsmessenger.helpers.THREAD_ID
import com.simplemobiletools.smsmessenger.helpers.letterBackgroundColors
import com.simplemobiletools.smsmessenger.models.Contact import com.simplemobiletools.smsmessenger.models.Contact
import com.simplemobiletools.smsmessenger.models.Message import com.simplemobiletools.smsmessenger.models.Message
import com.simplemobiletools.smsmessenger.models.MessageAttachment import com.simplemobiletools.smsmessenger.models.MessageAttachment
@@ -488,8 +489,9 @@ fun Context.getNotificationLetterIcon(letter: String): Bitmap {
val view = TextView(this) val view = TextView(this)
view.layout(0, 0, size, size) view.layout(0, 0, size, size)
val charValue = letter.toCharArray().first().toInt()
val circlePaint = Paint().apply { val circlePaint = Paint().apply {
color = getAdjustedPrimaryColor() color = letterBackgroundColors[charValue % letterBackgroundColors.size].toInt()
isAntiAlias = true isAntiAlias = true
} }

View File

@@ -1,6 +1,7 @@
package com.simplemobiletools.smsmessenger.extensions package com.simplemobiletools.smsmessenger.extensions
import com.simplemobiletools.commons.extensions.normalizeString import com.simplemobiletools.commons.extensions.normalizeString
import java.util.*
// get the contact names first letter at showing the placeholder without image // 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() { fun refreshMessages() {
EventBus.getDefault().post(Events.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 package com.simplemobiletools.smsmessenger.models
import android.graphics.Bitmap
import android.provider.Telephony import android.provider.Telephony
import com.simplemobiletools.smsmessenger.extensions.getThreadTitle import com.simplemobiletools.smsmessenger.extensions.getThreadTitle
@@ -10,4 +11,6 @@ data class Message(
fun isReceivedMessage() = type == Telephony.Sms.MESSAGE_TYPE_INBOX fun isReceivedMessage() = type == Telephony.Sms.MESSAGE_TYPE_INBOX
fun getThreadTitle() = participants.getThreadTitle() fun getThreadTitle() = participants.getThreadTitle()
fun getThreadImageUri() = participants.firstOrNull()?.photoUri
} }

View File

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