android - 开始新 Activity 时使用 Glide

标签 android android-glide

我有 RecyclerView ,其中图像位于 CardView 中, 图像是使用 glide 加载的。在 onClick() 事件中,我启动一个新的 Activity:

 override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val text = layout!!.findViewById<View>(R.id.item_text) as TextView
    val card = layout!!.findViewById<View>(R.id.item_card) as CardView
    val img = layout!!.findViewById<View>(R.id.item_image) as ImageView
    val requestOptions = RequestOptions()
    requestOptions.placeholder(R.drawable.placeholder)
    Glide.with(this.activity.applicationContext).setDefaultRequestOptions(requestOptions).load(mDataset[position].urlToImage).into(img)
    text.text = mDataset[position].title
    card.setOnClickListener {
        val intent = Intent(activity, ArticleActivity::class.java)
        intent.putExtra("Title", mDataset[position].title)
        intent.putExtra("Author", mDataset[position].source.name)
        intent.putExtra("Text", mDataset[position].description)
        img.transitionName = "item_image"
        intent.putExtra("urlToImage", mDataset[position].urlToImage)
        val options = ActivityOptionsCompat.makeSceneTransitionAnimation(this.activity, img as View, "item_image")
        this.activity.startActivity(intent, options.toBundle())
    }
}

但是如果图像没有时间加载,那么当您返回到此 Activity 时,此 ImageView 将为空。 在 list 中:

<activity
        android:name=".MainActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:label="@string/title_activity_main"
        android:theme="@style/AppTheme"
        android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ArticleActivity"
        android:label="@string/title_activity_article"
        android:parentActivityName=".MainActivity"
        android:theme="@style/AppTheme.AppBarOverlay.TransparentStatusBar"/>

当您按下硬件后退按钮以及单击工具栏后退按钮时,也会发生这种情况。

已解决:

    val requestOptions = RequestOptions()
    requestOptions.placeholder(R.drawable.placeholder)
    requestOptions.dontAnimate()
    requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL)
    Glide.with(this.activity.applicationContext).setDefaultRequestOptions(requestOptions).load(mDataset[position].urlToImage).into(img)

最佳答案

您可以使用glide的.diskCacheStrategy(DiskCacheStrategy.ALL)从Glide缓存加载图片

val requestOptions = RequestOptions()
requestOptions.placeholder(R.drawable.placeholder)
requestOptions.dontAnimate()
requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL)

Glide.with(this.activity.applicationContext)
     .setDefaultRequestOptions(requestOptions)
    .load(mDataset[position].urlToImage)
    .into(img)

关于android - 开始新 Activity 时使用 Glide,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51477138/

相关文章:

android - 使用来自 MySQL 的数据以编程方式设置 ImageView 的高度

java - Firebase Glide 不显示图像

java - Android,Glide图像加载库: NullPointerException, ProviderInfo

Android Glide : How to download bitmap at specific size?

android - Glide 没有解决它的方法

android - 套接字连接 - 读取 XML 文件插入垃圾字符

android - 谷歌地图 Android API v2 : My location marker always over other markers?

java - 将 Android 项目导入 Eclipse 报错

Android Facebook SDK 4.5.0 登录-注销问题无效 key 哈希错误,同时尝试再次登录

android - 在 ViewFlipper 中按需工作