Replace Glide with Picasso (#19)
This commit is contained in:
@@ -137,11 +137,8 @@ dependencies {
|
|||||||
// https://github.com/Kotlin/kotlinx-datetime/releases
|
// https://github.com/Kotlin/kotlinx-datetime/releases
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-datetime:0.3.1"
|
implementation "org.jetbrains.kotlinx:kotlinx-datetime:0.3.1"
|
||||||
|
|
||||||
// https://github.com/bumptech/glide/releases
|
// https://github.com/square/picasso/releases
|
||||||
def glide_version = "4.12.0"
|
implementation "com.squareup.picasso:picasso:2.8"
|
||||||
implementation "com.github.bumptech.glide:glide:$glide_version"
|
|
||||||
implementation "com.github.bumptech.glide:okhttp3-integration:$glide_version"
|
|
||||||
kapt "com.github.bumptech.glide:compiler:$glide_version"
|
|
||||||
|
|
||||||
// https://github.com/junit-team/junit4/releases
|
// https://github.com/junit-team/junit4/releases
|
||||||
testImplementation "junit:junit:4.13.2"
|
testImplementation "junit:junit:4.13.2"
|
||||||
|
|||||||
@@ -1,14 +1,24 @@
|
|||||||
package gq.kirmanak.mealient.ui
|
package gq.kirmanak.mealient.ui
|
||||||
|
|
||||||
|
import com.squareup.picasso.Picasso
|
||||||
import dagger.Binds
|
import dagger.Binds
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
|
import dagger.Provides
|
||||||
import dagger.hilt.InstallIn
|
import dagger.hilt.InstallIn
|
||||||
import dagger.hilt.components.SingletonComponent
|
import dagger.hilt.components.SingletonComponent
|
||||||
import gq.kirmanak.mealient.ui.glide.ImageLoaderGlide
|
import gq.kirmanak.mealient.ui.picasso.ImageLoaderPicasso
|
||||||
|
import gq.kirmanak.mealient.ui.picasso.PicassoBuilder
|
||||||
|
import javax.inject.Singleton
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
@InstallIn(SingletonComponent::class)
|
@InstallIn(SingletonComponent::class)
|
||||||
interface UiModule {
|
interface UiModule {
|
||||||
@Binds
|
@Binds
|
||||||
fun bindImageLoader(imageLoaderGlide: ImageLoaderGlide): ImageLoader
|
fun bindImageLoader(imageLoaderGlide: ImageLoaderPicasso): ImageLoader
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun providePicasso(picassoBuilder: PicassoBuilder): Picasso = picassoBuilder.buildPicasso()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
package gq.kirmanak.mealient.ui.glide
|
|
||||||
|
|
||||||
import android.widget.ImageView
|
|
||||||
import androidx.annotation.DrawableRes
|
|
||||||
import gq.kirmanak.mealient.ui.ImageLoader
|
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
class ImageLoaderGlide @Inject constructor() : ImageLoader {
|
|
||||||
override fun loadImage(url: String?, @DrawableRes placeholderId: Int, imageView: ImageView) {
|
|
||||||
GlideApp.with(imageView)
|
|
||||||
.load(url)
|
|
||||||
.centerCrop()
|
|
||||||
.placeholder(placeholderId)
|
|
||||||
.into(imageView)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package gq.kirmanak.mealient.ui.glide
|
|
||||||
|
|
||||||
import com.bumptech.glide.annotation.GlideModule
|
|
||||||
import com.bumptech.glide.module.AppGlideModule
|
|
||||||
|
|
||||||
@GlideModule
|
|
||||||
class MainGlideModule : AppGlideModule()
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package gq.kirmanak.mealient.ui.picasso
|
||||||
|
|
||||||
|
import android.widget.ImageView
|
||||||
|
import com.squareup.picasso.Picasso
|
||||||
|
import gq.kirmanak.mealient.ui.ImageLoader
|
||||||
|
import timber.log.Timber
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class ImageLoaderPicasso @Inject constructor(
|
||||||
|
private val picasso: Picasso
|
||||||
|
) : ImageLoader {
|
||||||
|
|
||||||
|
override fun loadImage(url: String?, placeholderId: Int, imageView: ImageView) {
|
||||||
|
Timber.v("loadImage() called with: url = $url, placeholderId = $placeholderId, imageView = $imageView")
|
||||||
|
val width = imageView.measuredWidth
|
||||||
|
val height = imageView.measuredHeight
|
||||||
|
Timber.d("loadImage: width = $width, height = $height")
|
||||||
|
picasso.load(url).apply {
|
||||||
|
placeholder(placeholderId)
|
||||||
|
if (width > 0 && height > 0) resize(width, height).centerCrop()
|
||||||
|
into(imageView)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package gq.kirmanak.mealient.ui.picasso
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import com.squareup.picasso.OkHttp3Downloader
|
||||||
|
import com.squareup.picasso.Picasso
|
||||||
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
|
import gq.kirmanak.mealient.BuildConfig
|
||||||
|
import okhttp3.OkHttpClient
|
||||||
|
import timber.log.Timber
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class PicassoBuilder @Inject constructor(
|
||||||
|
@ApplicationContext private val context: Context,
|
||||||
|
private val okHttpClient: OkHttpClient
|
||||||
|
) {
|
||||||
|
|
||||||
|
fun buildPicasso(): Picasso {
|
||||||
|
Timber.v("buildPicasso() called")
|
||||||
|
val builder = Picasso.Builder(context)
|
||||||
|
builder.downloader(OkHttp3Downloader(okHttpClient))
|
||||||
|
if (BuildConfig.DEBUG) {
|
||||||
|
builder.loggingEnabled(true)
|
||||||
|
builder.indicatorsEnabled(true)
|
||||||
|
builder.listener { _, uri, exception ->
|
||||||
|
Timber.tag("Picasso").e(exception, "Can't load from $uri")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return builder.build()
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user