은근한

Android LoadImage (AsyncTask) 본문

카테고리 없음

Android LoadImage (AsyncTask)

EsJoo 2014. 10. 4. 04:17

안드로이드에서 이미지 URL을 불러오는 코드 입니다.


쓰레드를 사용하기 보다는 AsyncTask를 사용했습니다.


기본생정자 말고 오버로딩된 생성자에서 Context는 사용하는 Activity 이고 ImageView는 이미지뷰를 정의한 이미지뷰입니다.


AsyncTask에서 doinBackground를 실행하려면


사용할 클래스에서 .execute를 할때 .execute("불러올 url을 String값으로 넣어줍니다.")


그럼 doinBackground에 매개변수인 args에서 값을 받아서 쓰게 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package android.app.service;
 
import java.io.InputStream;
import java.net.URL;
 
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
import android.widget.Toast;
 
public class LoadImage extends AsyncTask<StringString, Bitmap>{
 
    private Context context;
    
    public LoadImage(Context context, ImageView imgv){
        this.context = context;
        img = imgv;
    }
    
    public LoadImage(){
        
    }
    
public LoadImage(ImageView imgv){
        img = imgv;
    }
    // Bitmap
        ImageView img;
        Bitmap bitmap;
        ProgressDialog pDialog;    
    
    @Override
        protected void onPreExecute(){
        super.onPreExecute();
        pDialog = new ProgressDialog(context);
        pDialog.setMessage("Loading Image...");
        //pDialog.show(); // 
    }
    
    @Override
    protected Bitmap doInBackground(String... args) {
        // TODO Auto-generated method stub        
        try{
            bitmap = BitmapFactory.decodeStream((InputStream)new URL(args[0]).getContent());
            
        } catch(Exception e){
            e.printStackTrace();
        }            
        return bitmap;
    }
    protected void onPostExecute(Bitmap image){
        if(image != null){        
            img.setImageBitmap(image);
            pDialog.dismiss();
        }else{
            pDialog.dismiss();
            Toast.makeText(context, "Image Does not exist..", Toast.LENGTH_SHORT).show();
        }
    }
    
}