Skip to content

Commit 6277c59

Browse files
authored
Merge pull request #2 from faranjit/master
added changing background color with image.
2 parents 61adcd3 + 592813d commit 6277c59

3 files changed

Lines changed: 50 additions & 1 deletion

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@
1212
/captures
1313
.externalNativeBuild
1414
.cxx
15+
/.idea/

imagestackviewer/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ dependencies {
3838
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
3939
implementation 'androidx.appcompat:appcompat:1.1.0'
4040
implementation 'androidx.core:core-ktx:1.3.0'
41+
implementation 'androidx.palette:palette:1.0.0'
4142
testImplementation 'junit:junit:4.12'
4243
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
4344
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

imagestackviewer/src/main/java/com/labters/imagestackviewer/ImageViewExtensions.kt

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,43 @@ package com.labters.imagestackviewer
22

33
import android.graphics.Bitmap
44
import android.graphics.BitmapFactory
5+
import android.graphics.drawable.Drawable
56
import android.util.Base64
67
import android.widget.ImageView
8+
import android.widget.LinearLayout
9+
import androidx.core.graphics.ColorUtils
710
import androidx.core.graphics.drawable.toBitmap
811
import androidx.databinding.BindingAdapter
12+
import androidx.palette.graphics.Palette
913
import com.bumptech.glide.Glide
14+
import com.bumptech.glide.load.DataSource
15+
import com.bumptech.glide.load.engine.GlideException
16+
import com.bumptech.glide.request.RequestListener
1017
import com.bumptech.glide.request.RequestOptions
18+
import com.bumptech.glide.request.target.Target
1119
import com.labters.imagestackviewer.data.ResourceType
1220
import java.io.ByteArrayOutputStream
1321

14-
object ImageViewExtensions
22+
object ImageViewExtensions {
23+
24+
private const val ALPHA = 180
25+
26+
/**
27+
* Changes the background of the image when resource is ready.
28+
*/
29+
fun onImageReady(imageView: ImageView, resource: Drawable?) {
30+
val bitmap = resource?.toBitmap()
31+
bitmap?.let {
32+
(imageView.parent as? LinearLayout)?.let {
33+
Palette.Builder(bitmap).generate { palette ->
34+
it.setBackgroundColor(
35+
ColorUtils.setAlphaComponent(palette?.getDominantColor(0) ?: 0, ALPHA)
36+
)
37+
}
38+
}
39+
}
40+
}
41+
}
1542

1643
@BindingAdapter(value = ["app:src", "app:isCenterCrop"], requireAll = false)
1744
fun ImageView.srcGlide(data: Any?, isCenterCrop: Boolean?) {
@@ -40,6 +67,26 @@ fun ImageView.srcGlide(data: Any?, isCenterCrop: Boolean?) {
4067
.with(context)
4168
.load(resource)
4269
.apply(options)
70+
.addListener(object : RequestListener<Drawable> {
71+
override fun onResourceReady(
72+
resource: Drawable?,
73+
model: Any?,
74+
target: Target<Drawable>?,
75+
dataSource: DataSource?,
76+
isFirstResource: Boolean
77+
): Boolean {
78+
ImageViewExtensions.onImageReady(this@srcGlide, resource)
79+
return false
80+
}
81+
82+
override fun onLoadFailed(
83+
e: GlideException?,
84+
model: Any?,
85+
target: Target<Drawable>?,
86+
isFirstResource: Boolean
87+
): Boolean = false
88+
89+
})
4390
.into(this)
4491
}
4592
}

0 commit comments

Comments
 (0)