用滑行加载图像很慢
Loading image with glide is slow
我有应用程序与服务器连接,当图片加载时看起来很慢,当上下滚动时似乎在滑动想要再次阅读图片!
这是我的滑行适配器:
数据适配器:
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private Context context;
private ArrayList<AndroidVersion> android;
public DataAdapter(Context context,ArrayList<AndroidVersion> android) {
this.context = context;
this.android = android;
}
@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, int i) {
viewHolder.tv_name.setText(android.get(i).getName());
viewHolder.tv_version.setText(android.get(i).getVer());
viewHolder.tv_api_level.setText(android.get(i).getApi());
// load image into imageview using glide
Glide.with(context).load("http://memaraneha.ir/Erfan/images/"+android.get(i).getPic())
.placeholder(R.drawable.truiton)
.error(R.drawable.truiton)
.into(viewHolder.tv_image);
}
@Override
public int getItemCount() {
return android.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView tv_name,tv_version,tv_api_level;
public ImageView tv_image;
public ViewHolder(View view) {
super(view);
tv_name = (TextView)view.findViewById(R.id.tv_name);
tv_version = (TextView)view.findViewById(R.id.tv_version);
tv_api_level = (TextView)view.findViewById(R.id.tv_api_level);
tv_image= (ImageView) view.findViewById(R.id.img);
}
}
}
如果有人可以帮忙,请帮忙!
从 URL
获取图像时只需添加此代码,此代码会减小该图像的大小
你也可以这样做,
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
//save scaled down image to cache dir
newBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File imageFile = new File(filePath);
// write the bytes in file
FileOutputStream fo = new FileOutputStream(imageFile);
fo.write(bytes.toByteArray());
使用 diskCacheStrategy(DiskCacheStrategy.ALL).
如需更多信息,请访问此 Click Here
我使用了 dontTransform()
方法,它几乎节省了我一秒钟。图像真正首先加载到列表中。
您可以为您的 glide
使用以下部件:
.thumbnail( 0.5f )
.diskCacheStrategy( DiskCacheStrategy.ALL )
像这样:
Glide.with( context )
.load( arrayList.get().getImage_url())
.thumbnail( 0.5f )
.override( 200, 200 )
.placeholder(R.drawable.placeholder_image)
.diskCacheStrategy( DiskCacheStrategy.ALL )
.into( imageView );
我有应用程序与服务器连接,当图片加载时看起来很慢,当上下滚动时似乎在滑动想要再次阅读图片! 这是我的滑行适配器:
数据适配器:
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private Context context;
private ArrayList<AndroidVersion> android;
public DataAdapter(Context context,ArrayList<AndroidVersion> android) {
this.context = context;
this.android = android;
}
@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, int i) {
viewHolder.tv_name.setText(android.get(i).getName());
viewHolder.tv_version.setText(android.get(i).getVer());
viewHolder.tv_api_level.setText(android.get(i).getApi());
// load image into imageview using glide
Glide.with(context).load("http://memaraneha.ir/Erfan/images/"+android.get(i).getPic())
.placeholder(R.drawable.truiton)
.error(R.drawable.truiton)
.into(viewHolder.tv_image);
}
@Override
public int getItemCount() {
return android.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView tv_name,tv_version,tv_api_level;
public ImageView tv_image;
public ViewHolder(View view) {
super(view);
tv_name = (TextView)view.findViewById(R.id.tv_name);
tv_version = (TextView)view.findViewById(R.id.tv_version);
tv_api_level = (TextView)view.findViewById(R.id.tv_api_level);
tv_image= (ImageView) view.findViewById(R.id.img);
}
}
}
如果有人可以帮忙,请帮忙!
从 URL
获取图像时只需添加此代码,此代码会减小该图像的大小
你也可以这样做,
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
//save scaled down image to cache dir
newBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File imageFile = new File(filePath);
// write the bytes in file
FileOutputStream fo = new FileOutputStream(imageFile);
fo.write(bytes.toByteArray());
使用 diskCacheStrategy(DiskCacheStrategy.ALL).
如需更多信息,请访问此 Click Here
我使用了 dontTransform()
方法,它几乎节省了我一秒钟。图像真正首先加载到列表中。
您可以为您的 glide
使用以下部件:
.thumbnail( 0.5f )
.diskCacheStrategy( DiskCacheStrategy.ALL )
像这样:
Glide.with( context )
.load( arrayList.get().getImage_url())
.thumbnail( 0.5f )
.override( 200, 200 )
.placeholder(R.drawable.placeholder_image)
.diskCacheStrategy( DiskCacheStrategy.ALL )
.into( imageView );