안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요? 예전에 질문글 올려서...
갤러리를 이용해서 화면 좌우 스크롤까진 구현했는데요.
화면에 버튼들을 몇개 올렸더니 버튼이 있는 부분에선 좌우스크롤이 안되더군요.
(포커스가 버튼이 먼저라 그런거 같네요.)
이런 경우는 어떻게 처릴 해야 할까요. ㅠ.ㅠ
2011.09.05 17:57:52
안드로이드 호환 패키지에 보면 ViewPager라고 있습니다. 이걸 사용하세요
android.com의 blog 탭을 보시면 최근 글에 사용법이 나와있습니다.
2011.09.05 21:15:51
@Override
public boolean onTouchEvent(MotionEvent event)
{
int action = event.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:
START_X = event.getX(); //시작 점 저장
break;
case MotionEvent.ACTION_MOVE:
if(START_X == 0)
START_X = event.getX();
if(Math.abs(START_X-event.getX()) > 20) //터치가 좌우로 이루어 지면 페이지 넘김으로 인식 한다.
{
event.setLocation(event.getRawX(), event.getRawY()); //이벤트의 위치를 전체 뷰에서의 위치로 변경
if(!isScrollMode) //터치가 처음으로 좌우로 하는 것으로 되면
{
event.setAction(MotionEvent.ACTION_DOWN); //이벤트를 터치 시작으로 변경
//이벤트 넘기는 코드: 이거까지는 못드리겠네요. 스스로 고민해 보세요.
isScrollMode = true; //스크롤 모드는 TRUE로 변경, 이제부터는 이벤트를 갤러리로 넘김
}
else //좌우 터치를 계속 하고 있으면
{
event.setAction(MotionEvent.ACTION_MOVE); //이벤트의 액션은 터치 후 이동으로 설정
//이벤트 넘기는 코드: 이거까지는 못드리겠네요. 스스로 고민해 보세요.
}
}
if(isScrollMode)return false; // 좌/우 스크롤이면 이벤트 사용안함.
break;
case MotionEvent.ACTION_UP:
if(isScrollMode) //좌/우 스크롤이면
{
event.setLocation(event.getRawX(), event.getRawY()); //이벤트의 위치를 전체 뷰에서의 위치로 변경
//이벤트 넘기는 코드: 이거까지는 못드리겠네요. 스스로 고민해 보세요.
}
isScrollMode = false; //스크롤 모드는 FALSE로 변경, 다시 버튼 뷰가 터치 이벤트 받음.
START_X = 0;
break;
}
return super.onTouchEvent(event);
}
버튼을 상속받은 커스텀 뷰를 만드셔서
버튼의 onTouch 메소드를 오버라이드 하셔서
버튼에서 스크롤이 발생하면 갤러리로 이벤트를 넘겨주셔야 합니다.