开始新时使用 Glide activity
Using Glide when starting new activity
我有 RecyclerView
个图像 CardView
,
图像使用滑行加载。在 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
就会是空的。
在清单中:
<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加载线/GlideModule(如果有)/list Adapter代码(如果有):
这是我在试错 运行 使用此库时使用的配置之一。我试过了
.skipMemoryCache(true), .diskCacheStategy
让它发挥作用
Glide.with(itemView.getContext())
.load(groupPhotos.getImg_url()) // simple url with an image
.asBitmap()
.placeholder(R.drawable.jaya_grocer)
.error(R.drawable.cold_storage)
.dontAnimate()
.into(iv_image);
布局XML:
<ImageView
android:id="@+id/iv_list_image"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_below="@+id/tv_list_members"
android:layout_marginTop="@dimen/std_padding"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/default_group_5" />
您可以使用 .diskCacheStrategy(DiskCacheStrategy.ALL)
的 glide 从 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)
我有 RecyclerView
个图像 CardView
,
图像使用滑行加载。在 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
就会是空的。
在清单中:
<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加载线/GlideModule(如果有)/list Adapter代码(如果有):
这是我在试错 运行 使用此库时使用的配置之一。我试过了
.skipMemoryCache(true), .diskCacheStategy
让它发挥作用
Glide.with(itemView.getContext())
.load(groupPhotos.getImg_url()) // simple url with an image
.asBitmap()
.placeholder(R.drawable.jaya_grocer)
.error(R.drawable.cold_storage)
.dontAnimate()
.into(iv_image);
布局XML:
<ImageView
android:id="@+id/iv_list_image"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_below="@+id/tv_list_members"
android:layout_marginTop="@dimen/std_padding"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/default_group_5" />
您可以使用 .diskCacheStrategy(DiskCacheStrategy.ALL)
的 glide 从 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)