개발

04/17 주특기 숙련주차 개인과제(2)

sos000303 2024. 4. 17. 21:51
728x90

오늘은 개인과제의 필수 구현사항을 마무리짓고 추가 구현사항에 도전해보기로 했다.

1. [🔥약간 매운맛] 스크롤 상단 이동!

  1. 스크롤을 최상단으로 이동시키는 플로팅 버튼 기능 추가
  2. 플로팅 버튼은 스크롤을 아래로 내릴 때 나타나며, 스크롤이 최상단일때 사라집니다.
  3. 플로팅 버튼을 누르면 스크롤을 최상단으로 이동시킵니다.
  4. 플로팅 버튼은 나타나고 사라질때 fade 효과가 있습니다.
  5. 플로팅 버튼을 클릭하면(pressed) 아이콘 색이 변경됩니다.

1번, 3번 기능은 간단히 레이아웃 파일에 floatingActionButton을 추가하고 클릭리스너를 추가해주는 것으로 해결했다.

2번, 4번 기능은 리사이클러 뷰의 onScrollListener와 AlphaAnimation을 이용해서 작성했다. 
onScrollListener는 두개의 오버라이드 가능한 함수를 가진 오브젝트이다.

  • onScrolled 메서드는 스크롤의 상태가 바뀌는 도중에 호출되는 메서드다.
    중복실행이나 자원낭비 등의 이유로 주의해서 실행해야한다.
  • onScrollStateChanged 메서드는 스크롤이 끝날 때 호출 되는 메서드이며 newState라는 스크롤 상태를 표시하는 프로퍼티를 제공한다.
    newState는 SCROLL_STATE_IDLE,  SCROLL_STATE_DRAGGINIG ,  SCROLL_STATE_SETTLING의 세 상태를 나타내며 각각 스크롤을 하지 않는 상태, 스크롤을 하는 상태, 위든 아래든 스크롤이 끝까지 간 상태를 표시한다.

5번 기능은 레이아웃 속성인 rippleColor를 이용해 구현했다.

728x90