HorizontalScrollView 를 사용해서 가로로 스크롤되는 메뉴를 만들었다.
사용자에게 안보이는 영역에 버튼이 있다는것과, 스크롤 가능하다는것을 인지시켜 주려고
버튼 양 끝에 화살표를 넣어주었다.
이때 필요에 따라 화살표를 보여주었다가 숨겼다가 하려고 하던찰나
getScrollX 를 사용해서 특정 픽셀값 이상일때 << 이런식에 조건을 주어서 처리했더니
미묘하게 살짝씩 터치했을경우 좌우 화살표가 사라지지 않고 버티는경우가 있었다.. 뭐 if문에 안걸려서이겠지만
아무튼 조금더 섬세하게 작동할수있도록 하려고 생각한 방법이
진행 방향을 체크해서
해당 진행방향의 반대쪽 화살표만 표시하도록 하는것 !
정말 1픽셀만 움직여도 바로 반응해버리니 참 내가 생각해도 대견하다.
뭐 이런걸 가지고, 쉽ㄱ구만. 이라고 생각하겠지만.. 정작 생각해 내기까지는 30분 정도 끙끙 고민했어요 ㅋㅋ
그럼 아래 로직을 참고해주세요
arrow_left 와 arrow_right 는 ImageView 객체 입니다 ~
HorizontalScrollView scroll_menu = (HorizontalScrollView)findViewById(R.id.scroll_menu);
scroll_menu.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(point < scroll_menu.getScrollX()){
// 진행방향 right
point = scroll_menu.getScrollX();
arrow_left.setVisibility(View.VISIBLE);
arrow_right.setVisibility(View.INVISIBLE);
}else if(point == scroll_menu.getScrollX()){
// pass
}else{
// 진행방향 left
point = scroll_menu.getScrollX();
arrow_left.setVisibility(View.INVISIBLE);
arrow_right.setVisibility(View.VISIBLE);
}
return false;
}
});
댓글
댓글 쓰기