라이브 배경이미지 캐시 적용
This commit is contained in:
parent
f74d8bfc16
commit
6a72bc63c0
|
@ -8,6 +8,7 @@ import androidx.appcompat.app.AppCompatDelegate
|
|||
import com.orhanobut.logger.AndroidLogAdapter
|
||||
import com.orhanobut.logger.Logger
|
||||
import kr.co.vividnext.sodalive.BuildConfig
|
||||
import kr.co.vividnext.sodalive.common.ImageLoaderProvider
|
||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||
import kr.co.vividnext.sodalive.di.AppDI
|
||||
|
||||
|
@ -26,6 +27,8 @@ class SodaLiveApp : Application() {
|
|||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
||||
|
||||
SharedPreferenceManager.init(applicationContext)
|
||||
|
||||
ImageLoaderProvider.init(applicationContext)
|
||||
}
|
||||
|
||||
private fun isDebuggable(): Boolean {
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package kr.co.vividnext.sodalive.common
|
||||
|
||||
import android.content.Context
|
||||
import coil.ImageLoader
|
||||
import okhttp3.Cache
|
||||
import okhttp3.OkHttpClient
|
||||
import java.io.File
|
||||
|
||||
object ImageLoaderProvider {
|
||||
lateinit var imageLoader: ImageLoader
|
||||
private set
|
||||
|
||||
val isInitialized: Boolean
|
||||
get() = ::imageLoader.isInitialized
|
||||
fun init(context: Context) {
|
||||
val cacheSize = 250L * 1024L * 1024L // 250 MB
|
||||
val cacheDirectory = File(
|
||||
context.cacheDir,
|
||||
"image_cache"
|
||||
).apply { mkdirs() }
|
||||
|
||||
val cache = Cache(cacheDirectory, cacheSize)
|
||||
|
||||
imageLoader = ImageLoader.Builder(context)
|
||||
.okHttpClient {
|
||||
OkHttpClient().newBuilder()
|
||||
.cache(cache)
|
||||
.build()
|
||||
}
|
||||
.build()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package kr.co.vividnext.sodalive.extensions
|
||||
|
||||
import android.widget.ImageView
|
||||
import coil.load
|
||||
import coil.request.ImageRequest
|
||||
import kr.co.vividnext.sodalive.common.ImageLoaderProvider
|
||||
import kr.co.vividnext.sodalive.common.ImageLoaderProvider.imageLoader
|
||||
|
||||
fun ImageView.loadUrl(url: String?, builder: ImageRequest.Builder.() -> Unit = {}) {
|
||||
if (!ImageLoaderProvider.isInitialized) {
|
||||
throw IllegalStateException("ImageLoaderProvider is not initialized")
|
||||
}
|
||||
this.load(url, imageLoader, builder)
|
||||
}
|
|
@ -57,6 +57,7 @@ import kr.co.vividnext.sodalive.common.SodaLiveService
|
|||
import kr.co.vividnext.sodalive.databinding.ActivityLiveRoomBinding
|
||||
import kr.co.vividnext.sodalive.dialog.LiveDialog
|
||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||
import kr.co.vividnext.sodalive.extensions.loadUrl
|
||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||
import kr.co.vividnext.sodalive.live.room.chat.LiveRoomChatAdapter
|
||||
import kr.co.vividnext.sodalive.live.room.chat.LiveRoomChatRawMessage
|
||||
|
@ -674,13 +675,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
|
|||
}
|
||||
|
||||
binding.tvTitle.text = response.title
|
||||
binding.ivCover.load(
|
||||
response.coverImageUrl,
|
||||
imageLoader = ImageLoader.Builder(applicationContext)
|
||||
.memoryCachePolicy(CachePolicy.ENABLED)
|
||||
.diskCachePolicy(CachePolicy.ENABLED)
|
||||
.build()
|
||||
)
|
||||
binding.ivCover.loadUrl(response.coverImageUrl)
|
||||
|
||||
binding.flDonation.visibility =
|
||||
if (response.creatorId != SharedPreferenceManager.userId) {
|
||||
|
@ -797,7 +792,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
|
|||
setNoticeAndClickableUrl(binding.tvNotice, response.notice)
|
||||
|
||||
binding.tvCreatorNickname.text = response.creatorNickname
|
||||
binding.ivCreatorProfile.load(response.creatorProfileUrl) {
|
||||
binding.ivCreatorProfile.loadUrl(response.creatorProfileUrl) {
|
||||
crossfade(true)
|
||||
placeholder(R.drawable.ic_place_holder)
|
||||
transformations(CircleCropTransformation())
|
||||
|
|
|
@ -10,6 +10,7 @@ import coil.transform.RoundedCornersTransformation
|
|||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.databinding.ItemLiveRoomProfileBinding
|
||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||
import kr.co.vividnext.sodalive.extensions.loadUrl
|
||||
import kr.co.vividnext.sodalive.live.room.info.LiveRoomMember
|
||||
|
||||
class LiveRoomProfileListAdapter : RecyclerView.Adapter<LiveRoomProfileListAdapter.ViewHolder>() {
|
||||
|
@ -17,7 +18,7 @@ class LiveRoomProfileListAdapter : RecyclerView.Adapter<LiveRoomProfileListAdapt
|
|||
private val binding: ItemLiveRoomProfileBinding
|
||||
) : RecyclerView.ViewHolder(binding.root) {
|
||||
fun bind(item: LiveRoomMember) {
|
||||
binding.ivProfile.load(item.profileImage) {
|
||||
binding.ivProfile.loadUrl(item.profileImage) {
|
||||
crossfade(true)
|
||||
placeholder(R.drawable.ic_place_holder)
|
||||
transformations(RoundedCornersTransformation(23.3f.dpToPx()))
|
||||
|
|
Loading…
Reference in New Issue