안드로이드 개발 질문/답변
(글 수 45,052)
슬라이드 쇼 기능을 구현하려고 하고 있습니다.
뷰 간에 전환을 하는 방법에 대해 질문드립니다.
SDK의 ViewFlipper 와 ViewSwitcher 를 이용하여 각각 두개의 예제를 만들어 보았습니다.
스크린에 버튼을 달아서 버튼을 클릭하면 슬라이드를 변경하도록 하는 것 까지는 구현이 되었습니다.
일정 시간 후 자동으로 슬라이드가 변경되도록 하고 싶은데 어떻게 해야 할지 잘 모르겠네요.;;;;
버튼을 이용한 방법으로는 이미지 파일을 배열 (혹은 ArrayList)에 저장해 놓고 루프를 돌며,
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
mSwitcher.setImageResource(images[i]);
}
});
위와 같은 식으로 구현하였습니다.
ViewFlipper의 경우에는 showNext()를 사용하였구요;
ViewFlipper 클래스의 경우 startFlipping() 메소드를 제공해주고 있어서 편리할거라 생각했는데, 마지막 이미지까지 변환된뒤에
처음 이미지로 돌아와서 계속 반복되네요(슬라이드쇼가 끝나면 마지막 슬라이드의 이미지에서 멈춰있도록 하고 싶습니다.)
다른 방법으로는 루프에서
for(int i=0; i<images.length;i++){
mSwitcher.setImageResource(images[i]);
Thread.sleep(duration);
}
이런 식으로 했는데 이미지가 나타나지 않다가 루프를 다 돈후에 마지막 슬라이드에서만 나오네요.;;
이를 해결할 수 있는 방법, 혹은 startFlipping() 메서드를 루프의 마지막에 멈추도록 할 수 있는 방법이 없을까요?
뷰 간에 전환을 하는 방법에 대해 질문드립니다.
SDK의 ViewFlipper 와 ViewSwitcher 를 이용하여 각각 두개의 예제를 만들어 보았습니다.
스크린에 버튼을 달아서 버튼을 클릭하면 슬라이드를 변경하도록 하는 것 까지는 구현이 되었습니다.
일정 시간 후 자동으로 슬라이드가 변경되도록 하고 싶은데 어떻게 해야 할지 잘 모르겠네요.;;;;
버튼을 이용한 방법으로는 이미지 파일을 배열 (혹은 ArrayList)에 저장해 놓고 루프를 돌며,
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
mSwitcher.setImageResource(images[i]);
}
});
위와 같은 식으로 구현하였습니다.
ViewFlipper의 경우에는 showNext()를 사용하였구요;
ViewFlipper 클래스의 경우 startFlipping() 메소드를 제공해주고 있어서 편리할거라 생각했는데, 마지막 이미지까지 변환된뒤에
처음 이미지로 돌아와서 계속 반복되네요(슬라이드쇼가 끝나면 마지막 슬라이드의 이미지에서 멈춰있도록 하고 싶습니다.)
다른 방법으로는 루프에서
for(int i=0; i<images.length;i++){
mSwitcher.setImageResource(images[i]);
Thread.sleep(duration);
}
이런 식으로 했는데 이미지가 나타나지 않다가 루프를 다 돈후에 마지막 슬라이드에서만 나오네요.;;
이를 해결할 수 있는 방법, 혹은 startFlipping() 메서드를 루프의 마지막에 멈추도록 할 수 있는 방법이 없을까요?
2009.02.05 11:30:51
빠른 답변에 너무너무 감사드립니다.
생각보다 안드로이드에 적응하기가 쉽지 않네요..ㅠ
아래는 제 코드의 일부입니다.
playButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
for (int i = 0; i < 9; i++) {
imageIndex = i;
mHandler.postDelayed(new Runnable() {
public void run() {
mSwitcher.setImageResource(images.get(imageIndex));
}
}, 1000);
}
}
});
이런식으로 했는데 로그를 출력해보니 핸들러가 처리하는 것과 이미지를 셋팅하는 과정이 따로노는것 같네요.ㅠㅠ
결과적으로 마지막 이미지만 삽입이 됩니다.;;
쓰레드를 동기화 시키려면 어떻게 해야되는지 감이 잘 안오네요..
생각보다 안드로이드에 적응하기가 쉽지 않네요..ㅠ
아래는 제 코드의 일부입니다.
playButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
for (int i = 0; i < 9; i++) {
imageIndex = i;
mHandler.postDelayed(new Runnable() {
public void run() {
mSwitcher.setImageResource(images.get(imageIndex));
}
}, 1000);
}
}
});
이런식으로 했는데 로그를 출력해보니 핸들러가 처리하는 것과 이미지를 셋팅하는 과정이 따로노는것 같네요.ㅠㅠ
결과적으로 마지막 이미지만 삽입이 됩니다.;;
쓰레드를 동기화 시키려면 어떻게 해야되는지 감이 잘 안오네요..
이거는 자주 질문하시는 내용이라 언제 개발 정보에 넣어야겠네요..