使用滑行功能加载图像并在其他图像视图中使用它,而无需再次下载

时间:2018-07-17 11:30:49

标签: android

我一直在寻找一种方法来实现这一目标,或者寻找可以实现预期结果的任何方法。

我要实现的是使用滑行方式加载图像,然后再次在不同的Image View中使用它,而无需再次从服务器上下载它(下载会是更简单的方法,但是加载图像会花费更多时间)。 / p>

这是相关代码:

           Glide.with(getActivity())
                .load(getdetails.getRestlogo())
                .into(holder.ivlistrv);
        holder.ivlistrv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
                LayoutInflater inflater = getActivity().getLayoutInflater();
                View dialogView = inflater.inflate(R.layout.custom_alertlist_frag, null);
                dialogBuilder.setView(dialogView);
                ImageView alertiv = (ImageView) dialogView.findViewById(R.id.alertiv);
                final RatingBar alertrb = (RatingBar) dialogView.findViewById(R.id.alertrb);
                final TextView alerttv = (TextView) dialogView.findViewById(R.id.alerttv);
                //alertiv.set the image from ivlistrv
                alerttv.setText("Rate "+title);
                alertrb.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                    }
                });
                AlertDialog alertDialog = dialogBuilder.create();
                alertDialog.show();
            }
        });

2 个答案:

答案 0 :(得分:1)

使用.diskCacheStrategy(DiskCacheStrategy.ALL)

这将缓存您的图像,下次将其从缓存中加载

Glide.with(getActivity())
                    .load(getdetails.getRestlogo())
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .into(holder.ivlistrv);

Glide Chaching

答案 1 :(得分:0)

将地图用于其他ImageView。从mainActivity调用asyncTask类。我已经测试了这段代码,它对我有用

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    iv1 = (ImageView) findViewById(R.id.imageView);
    iv2 = (ImageView) findViewById(R.id.imageView2);

    new MyAsyncTask().execute("https://c.tribune.com.pk/2018/07/1759720-jinnahmazarkarachichangeofguardreutersxx-1531808403.jpg");
}

下载图像 AsyncTask 类,然后将其存储在Bitmap类变量中,该变量将保存在该变量中,供您随时随地使用。

public class MyAsyncTask extends AsyncTask<String,Void,Bitmap>{

    Bitmap map;

    @Override
    protected Bitmap doInBackground(String... strings) {
        try {
            file = Glide.with(Main2Activity.this)
                    .load(strings[0])
                    .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
                    .get();

            map = BitmapFactory.decodeFile(file.getAbsolutePath());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        return map;
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        super.onPostExecute(bitmap);
        iv1.setImageBitmap(bitmap);
        iv2.setImageBitmap(bitmap);
    }
}