diff --git a/app/build.gradle b/app/build.gradle index a528c198..6693d0ab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.31.9' + implementation 'com.simplemobiletools:commons:5.31.10' implementation 'joda-time:joda-time:2.10.1' implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.5' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt index a246a986..3de6ba59 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt @@ -3,11 +3,20 @@ package com.simplemobiletools.contacts.pro.activities import android.content.Intent import android.graphics.Color import android.graphics.drawable.ColorDrawable +import android.graphics.drawable.Drawable import android.os.Bundle import android.provider.ContactsContract import android.view.View import android.view.WindowManager import android.widget.RelativeLayout +import com.bumptech.glide.Glide +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions +import com.bumptech.glide.request.RequestListener +import com.bumptech.glide.request.RequestOptions +import com.bumptech.glide.request.target.Target import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.CONTACT_ID @@ -77,8 +86,8 @@ class ViewContactActivity : ContactActivity() { } private fun setupMenu() { - (activity_track_appbar.layoutParams as RelativeLayout.LayoutParams).topMargin = statusBarHeight - activity_track_toolbar.menu.apply { + (contact_appbar.layoutParams as RelativeLayout.LayoutParams).topMargin = statusBarHeight + contact_toolbar.menu.apply { findItem(R.id.share).setOnMenuItemClickListener { shareContact(fullContact!!) true @@ -100,7 +109,7 @@ class ViewContactActivity : ContactActivity() { } } - activity_track_toolbar.setNavigationOnClickListener { + contact_toolbar.setNavigationOnClickListener { finish() } } @@ -168,8 +177,40 @@ class ViewContactActivity : ContactActivity() { if (contact!!.photoUri.isEmpty() && contact!!.photo == null) { showPhotoPlaceholder(contact_photo) + contact_photo_bottom_shadow.beGone() } else { - updateContactPhoto(contact!!.photoUri, contact_photo, contact!!.photo) + val path = contact!!.photoUri + currentContactPhotoPath = path + + val options = RequestOptions() + .diskCacheStrategy(DiskCacheStrategy.RESOURCE) + .centerCrop() + + if (isDestroyed || isFinishing) { + return + } + + val wantedWidth = realScreenSize.x + val wantedHeight = resources.getDimension(R.dimen.top_contact_image_height).toInt() + + Glide.with(this) + .load(contact!!.photo ?: path) + .transition(DrawableTransitionOptions.withCrossFade()) + .apply(options) + .override(wantedWidth, wantedHeight) + .listener(object : RequestListener { + override fun onResourceReady(resource: Drawable?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { + contact_photo.background = ColorDrawable(0) + contact_photo_bottom_shadow.beVisible() + return false + } + + override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean { + showPhotoPlaceholder(contact_photo) + contact_photo_bottom_shadow.beGone() + return true + } + }).into(contact_photo) } val textColor = config.textColor @@ -184,7 +225,7 @@ class ViewContactActivity : ContactActivity() { contact_send_email.setOnClickListener { trySendEmail() } updateTextColors(contact_scrollview) - activity_track_toolbar.menu.findItem(R.id.open_with).isVisible = contact?.isPrivate() == false + contact_toolbar.menu.findItem(R.id.open_with).isVisible = contact?.isPrivate() == false } private fun setupViewContact() { diff --git a/app/src/main/res/layout/activity_view_contact.xml b/app/src/main/res/layout/activity_view_contact.xml index b61ef7c3..6676ed11 100644 --- a/app/src/main/res/layout/activity_view_contact.xml +++ b/app/src/main/res/layout/activity_view_contact.xml @@ -14,39 +14,43 @@ + android:layout_height="wrap_content"> + android:layout_width="match_parent" + android:layout_height="@dimen/top_contact_image_height" + android:layout_marginBottom="@dimen/normal_margin" + android:src="@drawable/ic_person_vector" /> + + + android:gravity="bottom|end" + android:paddingEnd="@dimen/medium_margin" + android:paddingBottom="@dimen/medium_margin"> 48dp 40dp 60dp + 300dp