안녕하세요 (__)
어제부터 계속 방법 찾아보다가 질문올려요.
HorizontalScrollView 를 사용해서
RelativeLayout 넣고 그 안에 이미지뷰와 버튼을 넣었습니다.
그래서 RealtiveLayout을 2개 만들어서 스크롤이 되게 했는데요.
페이지가 처음 로딩 될 때 ..
첫번째 RelativeLayout을 거쳐 두번째 RelativeLayout 로 자동으로 보여주고 싶어요.
방법을 찾아보니
hv.post(new Runnable() { //스레드로 조정
@Override
public void run() {
// TODO Auto-generated method stub
// hv.scrollTo(0, 0);
// hv.smoothScrollTo(800, 0);
// hv.setHorizontalScrollBarEnabled (false);
// hv.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
}
});
이러한 여러 방법이 나왔어요. 그런데 작동은 잘되는데
문제점이 발생했어요.
엑티비티가 열리기도 전에 바로 스크롤이 슉- 하고 가서 첫번째 RelativeLayout이 보이지도 않고,
두번째 RelativeLayout만 보입니다. 즉 움직임이 빠릅니다. ㅜㅜ
하고자 하는 방법은
엑티비티가 실행되고 처음 RelativeLayout에서 두번째 RelativeLayout으로 천천히 보여주었으면 좋겠습니다.
무슨방법이 있을까요? 도와주세요 ㅠㅠ
스크롤이 시작하는 시점을 원하시는 보이는 시점과 동일하게 맞출 수 있다면 문제가 쉽게 해결 될듯한데요.
onWindowFocusChanged(boolean hasFocus)란 메소드가 있습니다. (액티비티에서 오버라이드 하시구요)
이 메소드의 hasFocus 파라메터는 사람이 해당 내용물을 진짜로 볼 수 있는 시점입니다.
이 메소드는 눈으로 내용이 보이는 시점에서 계속 호출됩니다.
hasFocus가 true이면 보이는 시점, false이면 안보이는 시점
따라서 원하시는 내용은 구현하려면 아래와 같은 조건을 체크해 주시면 되겠네요.
hasFocus 가 true이면서 앱이 첫번째로 실행될 때 스크롤 이동 쓰레드를 시작 시키시면 될 듯합니다.