0

Может кто-нибудь дать мне руку. Как я могу использовать образец ниже, используя AsyncTask, а не блок Try.Как изменить загрузчик изображений Android в AsyncTask

Поскольку я просто хочу загрузить изображение из веб-хранилища в SD и получить возвращаемый сохраненный путь, чтобы я мог загрузить его на образ.

Я пользуюсь библиотекой https://github.com/Bearded-Hen/Android-Bootstrap У меня есть Circle Thumbnails ImageView. Я могу изменить изображение этого вида, используя изображение ящика. Вот почему я пытаюсь сохранить изображение первой затем загрузить на этот обычай ImageView

String filepath = ""; 
        try 
        { 
         URL url = new URL("http://d3sdoylwcs36el.cloudfront.net/VEN-virtual-enterprise-network-business-opportunities-small-fish_id799929_size485.jpg"); 
         HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
         urlConnection.setRequestMethod("GET"); 
         urlConnection.setDoOutput(true);     
         urlConnection.connect();     
         File SDCardRoot = Environment.getExternalStorageDirectory().getAbsoluteFile(); 
         String filename="downloadedFile.png"; 
         Log.i("Local filename:",""+filename); 
         File file = new File(SDCardRoot,filename); 
         if(file.createNewFile()) 
         { 
         file.createNewFile(); 
         }     
         FileOutputStream fileOutput = new FileOutputStream(file); 
         InputStream inputStream = urlConnection.getInputStream(); 
         int totalSize = urlConnection.getContentLength(); 
         int downloadedSize = 0; 
         byte[] buffer = new byte[1024]; 
         int bufferLength = 0; 
         while ((bufferLength = inputStream.read(buffer)) > 0) 
         {     
         fileOutput.write(buffer, 0, bufferLength);     
         downloadedSize += bufferLength;     
         Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ; 
         }    
         fileOutput.close(); 
         if(downloadedSize==totalSize) filepath=file.getPath();  
        } 
        catch (MalformedURLException e) 
        { 
         e.printStackTrace(); 
        } 
        catch (IOException e) 
        { 
         filepath=null; 
         e.printStackTrace(); 
        } 
        Log.e(TAG, "''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''"); 
        Log.i("filepath:"," "+filepath) ; 
        //return filepath; 

я получаю значение NULL для FilePath

+0

использовать выше код в doInBackground() метода asynctask –

+0

какая проблема вы получаете с помощью опубликованного кода? –

+0

Я бы очень хотел предложить использование открытого исходного кода для загрузки и отображения изображений в 'ImageView'. Отъезд Пикассо: https://github.com/square/picasso –

ответ

1
ImageView mChart = (ImageView) findViewById(R.id.imageview); 
String URL = "http://www...anything ..."; 

mChart.setTag(URL); 
new DownloadImageTask.execute(mChart); 

Класс Задача:

public class DownloadImagesTask extends AsyncTask<ImageView, Void, Bitmap> { 
ImageView imageView = null; 

@Override 
protected Bitmap doInBackground(ImageView... imageViews) { 
this.imageView = imageViews[0]; 
return download_Image((String)imageView.getTag()); 
} 

@Override 
protected void onPostExecute(Bitmap result) { 
imageView.setImageBitmap(result); 
} 


private Bitmap download_Image(String url) { 
    ... 
} 
Смежные вопросы