Asynctask Скачать и установить Jpg как imageView - PullRequest
0 голосов
/ 07 января 2020

С помощью inte rnet я могу загрузить jpg и установить его в ImageView с растровым изображением. Но я хочу оставить это как jog или png.

Как я могу это сделать?

  public class GetFlickr  extends AsyncTask<String, String, Bitmap> {

    private ProgressBar pBar;
    private String file = "flickr.xml";
    private WeakReference<ImageView> imageViewWeakReference;

  GetFlickr(ImageView Iv){
     imageViewWeakReference = new WeakReference<>(Iv);
  }

    @Override
    protected void onPreExecute(){
      super.onPreExecute();
      pBar = findViewById(R.id.progressBar);
      pBar.setProgress(0);
      pBar.setVisibility(View.VISIBLE);
    }

    @Override
    protected Bitmap doInBackground(String... strings) {
      Bitmap bitmap=null;

      try{

        URL urlfinal = new URL("https://farm66.staticflickr.com/65535/49344706212_80c4e61053.jpg");
        HttpURLConnection connection1 = (HttpURLConnection) urlfinal.openConnection();
        connection1.connect();
        //FileOutputStream fOut2= openFileOutput("flickr.jpg", MODE_PRIVATE);
        InputStream fOut2 = urlfinal.openStream();
        bitmap = BitmapFactory.decodeStream(fOut2);

      } catch (MalformedURLException e){
        e.printStackTrace();
      } catch (IOException e){
        e.printStackTrace();
      }
      return bitmap;
    }

    protected void onProgressUpdate(String... progress) {
      pBar.setProgress(Integer.parseInt(progress[0]));
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
      ImageView Iv = imageViewWeakReference.get();
      if (Iv != null){
        Iv.setImageBitmap(bitmap);
      }
      pBar.setVisibility(View.GONE);
    }
  }
}

Ответы [ 2 ]

1 голос
/ 07 января 2020

Я предлагаю вам использовать библиотеку Glide . он поддерживает LruCache и diskCache.

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.10.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
}

, затем загрузите его следующим образом:

Glide
    .with(myFragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(myImageView);
1 голос
/ 07 января 2020

Хорошую помощь окажет библиотека Пикассо

Вы можете легко работать с онлайн-изображениями, автоматизировать c кэширование и др. c.

просто вставьте в свой gradle:

implementation 'com.squareup.picasso:picasso:(insert latest version)'

и загрузите ваше изображение вот так

Picasso.get().load(/* here your url */).into(imageView1);
...