做的一個表情的APP,用Recyclerview,Glide(4.0版本)加載網路圖片到ImageView,發現只加載前面5張,滑動到下面后,其他的圖片才顯示出來,求解,想修復,但不知問題在哪?
uj5u.com熱心網友回復:
會不會是你圖片太大了,加載的慢uj5u.com熱心網友回復:
現在只加載前面5張了
uj5u.com熱心網友回復:
不知道問題在哪,查了很久資料都沒找到方法解決
uj5u.com熱心網友回復:
glide加載模式是不是設定成原圖加載了,glide為了友好性,不會oom只會加載失敗,你可以看看日志應該有輸出圖片太大、即將oom等相關資訊uj5u.com熱心網友回復:
好像沒有,它就加載5張,后面空白的,要滑動一下,之后再滑動回來,它才顯示出來
uj5u.com熱心網友回復:
發一個動圖鏈接來看看,如果不是圖片太大的問題,又沒有有用的日志的話,就是代碼邏輯問題了,需要發adapter相關的代碼uj5u.com熱心網友回復:
https://b7.cn/d/file/20190928/4f239502094d8ffb5b296f1a56d96e3c.jpg
這是其中一張沒及時加載出來的圖片
uj5u.com熱心網友回復:
package aystudio.nopi.adapter;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import java.util.List;
import aystudio.nopi.bean.Source;
import aystudio.nopi.bqb.DetailActivity;
import aystudio.nopi.bqb.R;
public class SourceAdapter extends RecyclerView.Adapter<SourceAdapter.ViewHolder> {
private final static String TAG = "SourceAdapter";
Context mContext;
List<Source> sourceList;
public SourceAdapter(List<Source> sourceList) {
this.sourceList = sourceList;
}
@Override
public ViewHolder onCreateViewHolder(final ViewGroup viewGroup, final int i) {
if (mContext == null) {
mContext = viewGroup.getContext();
}
View view = LayoutInflater.from(mContext).inflate(R.layout.layout_cardview,viewGroup,false);
ViewHolder viewHolder = new ViewHolder(view);
viewHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "onClick: "+ v.getTag());
Intent intent = new Intent(mContext,DetailActivity.class);
intent.putExtra("current_url",sourceList.get((Integer) v.getTag()).getUrl());
mContext.startActivity(intent);
}
});
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
viewHolder.itemView.setTag(i);
Source source = sourceList.get(i);
ViewGroup.LayoutParams layoutParams = viewHolder.imageView.getLayoutParams();
layoutParams.width = viewHolder.cardView.getWidth();
viewHolder.imageView.setLayoutParams(layoutParams);
/* RequestOptions options = new RequestOptions()
.skipMemoryCache(false) //用記憶體快取
.diskCacheStrategy(DiskCacheStrategy.ALL)//快取所有圖片(原圖,轉換圖)
.fitCenter() //fitCenter 縮放圖片充滿ImageView CenterInside大縮小原(圖) CenterCrop大裁小擴充滿ImageView Center大裁(中間)小原
.error(R.drawable.error);
//Glide為4.0版本以上 配置引數*/
Glide.with(mContext)
.load(source.getUrl())
.thumbnail(Glide.with(viewHolder.imageView).load(R.drawable.glide))
.into(viewHolder.imageView);
}
@Override
public int getItemCount() {
return sourceList.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
CardView cardView;
ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
cardView = (CardView) itemView;
imageView = itemView.findViewById(R.id.iv_photo_show);
}
}
}
uj5u.com熱心網友回復:
已貼adapter,看看哪里有問題
uj5u.com熱心網友回復:
沒看出啥問題,你把縮略圖的這行.thumbnail刪掉試試uj5u.com熱心網友回復:
也不行,還是一樣,不知道為什么,加載本地圖片就沒有這種問題
uj5u.com熱心網友回復:
你列印一下source.getUrl()看看是不是資料問題,順便發個鏈接我看看多大,還有上面的setLayoutParams干嘛的?imageview直接match就行了
uj5u.com熱心網友回復:
樓主解決了嗎?
uj5u.com熱心網友回復:
樓主解決了嗎?
還沒有,暫時丟一邊了
uj5u.com熱心網友回復:
1.看下你的圖片格式2.圖片的大小
3.加載的個數
uj5u.com熱心網友回復:
1.看下你的圖片格式
2.圖片的大小
3.加載的個數
gif,png,jpg
大小不一,表情包圖片,一般都不是很大,就300KB左右
個數大概30左右
主要問題,就是加載前5個,后面的要滑動才顯示,目前還沒找到怎么回事
uj5u.com熱心網友回復:
格式。。。。uj5u.com熱心網友回復:
png jpg gif轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/98616.html
標籤:Android
