【问题标题】:Loading image with glide is slow使用滑行加载图像很慢
【发布时间】:2017-02-02 02:36:06
【问题描述】:

我有应用程序与服务器连接,当图片加载看起来很慢并且向上和向下滚动似乎滑行时想要再次读取图像! 这是我的滑翔适配器:

数据适配器

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);

        }
    }

}

如果有人可以帮忙,请帮忙!

【问题讨论】:

    标签: java android android-studio android-recyclerview android-glide


    【解决方案1】:

    我使用了dontTransform() 方法,它几乎为我节省了一秒钟。图片首先加载到列表中。

    【讨论】:

      【解决方案2】:

      当您从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());
      

      检查this example

      【讨论】:

        【解决方案3】:

        使用diskCacheStrategy(DiskCacheStrategy.ALL)

        更多信息请访问Click Here

        【讨论】:

        • 这有什么帮助?
        【解决方案4】:

        您可以将以下部分用于您的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 );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-25
          相关资源
          最近更新 更多