본문 바로가기
개발일기/부산버스

부산 버스 v1.1.0 업데이트

by 유주원 2015. 1. 31.

드디어 부산 버스 업데이트가 이루어졌다!!

우선 사용자분들 가장 많은 요구 사항이 남구 10번 마을버스에 대한 실시간 정보 요청이었는데..

아직 부산 실시간 마을 버스 정보는 따로 제공되지가 않아서 마을버스에 대한 이슈는 

장기적 프로젝트로 남겨놔야 할 것 같다. ㅠ_ㅠ (죄송합니다.)


우선 이번 1.0.3에서 1.1.0으로 변경된 업데이트의 주 변경사항은 UI에 대한 변경이다.

획기적 기능이 추가되었다거나 그런건 딱히 없었다.


기존엔 탭뷰로 메인페이지가 이루어졌는데, 이게 예전 control이라 스크롤해서 다음 탭으로 이동할 수도 없었고,

무엇보다도 구글에서 deprecated된 기능이라 과감히 변경하기로 했다.






























위의 그림이 바뀐 UI 화면..

이번에 구글에서 google I/O를 발표하면서 tabview 대신에 자신들이 만든 customview(scrollview를 상속받음)를

open하였는데 이번 기회에 그걸 써보기로 했다.

해당 Customview에 대한 소스 위치는 아래와 같으며 slidingTab 이외에도 여러가지 ui 및 다른 기능들에 대한 소스를

볼 수 있다.


https://developer.android.com/samples/SlidingTabsColors/src/com.example.android.common/view/SlidingTabLayout.html


또한 기존 화면이 5개의 activity (즐겨찾기, 노선, 정류장, 환승, 설정)로 이루어졌었다면, 이번에는 4개의 fragment와 

1개의 액션바 화면으로 대체하였다.




위에 그림이 이번에 새롭게 변경된 drawerLayout 상에 설정 항목들을 나열한 것이다.

일단 activity에서 fragment로 바꿨을 때 가장 고생했던 부분이 바로 fragment내의 값이 변경되었는대도 새로고침이 안되었단

것이다.


fragment 자체의 문제는 아니었고, 일반적으로 viewpager 위에다 fragment를 등록했을 때, 페이지를 스크롤 했을 경우에만

현재 페이지의 앞뒤 fragment만 갱신이 이루어진다. 실제로 갱신이 이루어지는 것은 아니고, fragment가 detach되었다가

다시 attach되는 것이다. 

즉 현재 viewpager 안에 fragment가 4개가 있고 내가 지금 2번 fragment 화면을 보고 있다면, 1,3번 fragment는 현재

attach 되어 있는 상태이고, 4번 화면만 detach가 된다. 그래서 내가 3번 fragment로 화면을 옮기면, 4번 화면이 새롭게

attach가 되는 것이다.


위 문제는 따로 부모 fragment에서 자식 fragment들을 다시 갱신시키도록 함으로써 문제를 해결하였다.


그리고 또 하나 추가된 것이 시간표 기능.

친구들과 만나다 보면 막차 시간이 언제인지 궁금할 때가 종종 있었던 경험을 바탕으로 해당 버스가 각 정류장에서

언제 첫차가 오고 언제 막차가 오는지를 표시해주는 기능을 추가하였다.




각 버튼 컨트롤 및 슬라이더 컨트롤 등에 대한 도움은 아래의 오픈 소스 도움을 받았다.

버튼 컨트롤 이외에도 체크박스, 리플 리스트 등 많은 컨트롤 들이 제공되고 있다.


https://github.com/navasmdc/MaterialDesignLibrary#flat-button


안드로이드 Color에 대한 도움되는 곳


http://www.google.com/design/spec/style/color.html#