기존에 버튼을 누르면 사이트에서 그림파일을 받아와 보여주는 소스파일을 변형해서 이미지를 여러장 불러와 순차적으로 이미지를 바꿔서 보여주는 것으로 고쳐보려고 했습니다만....
아직 초보라 이소스 저소스에서 예제를 인용해 아래와 같이 바꾸니 항상 마지막 그림파일만 보여주네요 아 그림파일은 코드에서 보여지는데로 http://203.252.157.32:3391/~konkuk/1.jpg ~http://203.252.157.32:3391/~konkuk/5.jpg 까지 5개의 그림파일입니다.
invalidate()로 화면을 지우고 mHandler.sendEmptyMessageDelayed로 딜레이를 주어 그림파일이 바뀌는 것을 보여주려했는데 뭐가 잘못된것일까요;; 고수님들의 도움 부탁드립니다
public class C21_DownImage extends Activity {
ImageView img;
ArrayList<Bitmap> picture = new ArrayList<Bitmap>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.c21_downimage);
img = (ImageView)findViewById(R.id.result);
}
public void mOnClick(View v) {
String imageurl;
switch (v.getId()) {
case R.id.btndraw:
for(int i = 1; i <= 5; i++)
{
String addrs = "http://203.252.157.32:3391/~konkuk/";
imageurl = addrs + i;
try {
InputStream is = new URL("imageurl).openStream();
Bitmap bit = BitmapFactory.decodeStream(is);
picture.add(bit);
if (bit == null) {
Toast.makeText(this, "bitmap is null", 0).show();
}
is.close();
} catch (Exception e) {
Toast.makeText(this, "Error : " + e.getMessage(), 0).show();
}
}for(int j = 0; j < 5; j++){
img.setImageBitmap(picture.get(j));
img.invalidate();
mHandler.sendEmptyMessageDelayed(1,10000000); // 이부분이 잘못된것 같습니다만;;;
}break;
//아래 버튼은 기존에 있던 제가 안쓰는 기능입니다;;
case R.id.btndown:
imageurl = "http://www.winapi.co.kr/data/child3.jpg";
int idx = imageurl.lastIndexOf('/');
String localimage = imageurl.substring(idx + 1);
String path = Environment.getDataDirectory().getAbsolutePath();
path += "/data/exam.andexam/files/" + localimage;
if (new File(path).exists() == false) {
DownloadImage(imageurl, localimage);
}
Bitmap bitmap = BitmapFactory.decodeFile(path);
img.setImageBitmap(bitmap);
break;
}
}
boolean DownloadImage(String Url, String FileName) {
URL imageurl;
int Read;
try {
imageurl = new URL("Url);
HttpURLConnection conn= (HttpURLConnection)imageurl.openConnection();
int len = conn.getContentLength();
byte[] raster = new byte[len];
InputStream is = conn.getInputStream();
FileOutputStream fos = openFileOutput(FileName, 0);
for (;;) {
Read = is.read(raster);
if (Read <= 0) {
break;
}
fos.write(raster,0, Read);
}
is.close();
fos.close();
conn.disconnect();
} catch (Exception e) {
Toast.makeText(this, "Error : " + e.getMessage(),
0).show();
return false;
}
return true;
}
Handler mHandler = new Handler(){
public void handleMessage(Message msg){
}
};
}




handler의 딜레이는 핸들러를 호출할때 그만큼 타이밍을 준다는 말이지 for 문에 타이밍을 준다는 의미가 아닙니다.