mirror of
https://github.com/SimpleMobileTools/Simple-SMS-Messenger.git
synced 2025-06-05 21:49:22 +02:00
make the contact images more colorful
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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"
|
||||||
|
@@ -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
|
||||||
|
)
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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"
|
||||||
|
Reference in New Issue
Block a user