ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [안드로이드/JAVA] 프로젝트
    안드로이드 스튜디오/프로젝트 2022. 11. 4. 01:06

    안녕하세요~ 코딩하는 코알못 코메인입니다.

    두번째 개인 프로젝트를 진행 했다.

    해당 어플의 시작은 한 기업에서 과제로 받은 것을 기반으로 필자가 직접 제작했다.

    json파일을 해당 과제로 받은 것을 사용했다.

     

     제가 받은 과제의 내용은 대략적으로 주어진 역을 기준으로 4km까지의 역들을 표시하고, 두 역을 선택해 출발역과 도착역을 지정할 수 있어야한다. 범위 내의 역들은 검은 원과 노란 원으로 표시되어 있어야한다.

    축발역과 도착역을 지정 시, 출발역은 빨간원, 도착역은 파란원으로 표시한다. 서울 내의 지하철역들의 이름, 좌표는 UTF-8, JSON으로 받고, 그것을 http로 받아오는 등의 과제의 내용을 받았다.

     

    사용한 언어 : JAVA

    사용한 툴 : AndroidStudio

     

    필자가 만든 해당 어플은 두개의 액티비티로 되어있고, 두번째 액티비티가 과제로 주어진 부분들을 토대로 만든 것이다. 첫번째 액티비티는 필자가 좀 더 범용성을 늘려보기위해 추가한 것이다. 해당 액티비티는 시작할 때 기준으로 할 역을 선택하는 액티비티이다.

    예를들어 과제에서는 삼성역을 기준으로 4km까지의 역들만 표시되고, 선택 할 수있게 했다.

    필자는 이용자가 처음에 선택하면 해당 역을 기준으로 4km까지의 역들이 표시되고, 선택 할 수있게 했다.

     

    어플을 살펴보자.

     

    첫번째 화면

     

    앱을 실행하면 gps 권한을 요청하는 팝업창이 노출된다.

    허용하지 않아도 어플은 사용이 가능하지만, 현재 위치를 맵에 노출되게 할 수 없다.

    현재 위치를 확인하고, 노출되게 하기 위해서는 허용을 해야한다.

     

    기준이 되는 역을 선택하는 화면이다.

     

    리스트는 RecyclerView를 사용했고, 검색은 Filterable을 어뎁터에서 상속받아 필터링 기능을 사용해 구현했다.

    리스트에 들어간 역 이름은 json파일에서 역 이름만 받아 중복을 제거하고, 정렬했다. (TreeSet을 사용했다.)

     

    원하는 역을 선택하면 두번째 화면으로 전환되고, 선택한 역을 중심으로 맵이 표시 된다. (화면 전환은 Intent를 사용. 맵 표시는 json에 저장된 해당 역에 맞는 위도와 경도를 읽어와 카메라를 설정한다.)

     

    두번째 화면

    UI는 과제를 참고했다.

     

    맵은 NaverMap SDK를 사용.

     

    첫 화면에서 역을 선택하면 이렇게 화면이 전환 된다.

     

    길 찾기 제목 왼쪽에 화살표는 뒤로가기 버튼이고, 클릭 시 첫번째 화면으로 전환된다.(Intent 사용)

     

    첫 화면에서 가락시장을 선택하면 가락시장역을 기준으로 4km내의 역들이 모두 노란색 원과 검은색 원으로 표시된다.

    검은색 원은 단일호선 지하철 역이고, 노란원은 두개이상의 호선이 지나가는 역을 표시한 것이다. (marker에 json에 위도, 경도를 받아오고, 이미지를 입혀 marker를 맵에 배치했다.)

     

    첫번째 사진 하단에 가락시장이라 나오는 것은 Toast를 사용했다.

     

    하단에 두개의 칸은 출발역과 도착역을 선택 시 해당 칸에 표시 된다.

     

    위 사진들 처럼 역이 선택되어지지 않았을 때 하단 칸을 선택하면 역을 선택해 달라는 메세지가 노출된다.(역시 Toast를 사용햇다.)

     

    처음 역을 선택하면 서택한 marker는 빨간 색으로 바뀌고, 하단에 위치한 출발역 칸에 있는 원은 빨간색으로, 텍스트는 역 이름으로 바뀐다.

    역이 하나 선택되어 진 상태에서 다른 역을 선택하면 도착 역이 선택되어지는데, 출발역이 바뀐 것처럼 바뀌지만 원의 색은 파란색으로 바뀐다.

    이미 선택되어있는 역을 선택하면, 역 선택이 취소되고, 원래의 색으로 돌아가고 하단에 있는 칸도 원래대로 돌아간다.

    출발역 선택이 안되어있고, 도착역만 선택되어 있을때. 선택되어있지 않은 역을 선택하면 출발역으로 선택된다.

    출발역과 도착역이 둘다 선택되어 있을때 선택되어있지 않은 역을 선택하면 기존 도착역이 해제되고, 새로 선택한 역이 도착역으로 선택된다.

     

    역이 선택되어 있을때 하단에 있는 칸을 선택하면 해당 역으로 카메라가 이동한다.

     

    맵의 우측 상단에 위치해있는 ui를 보면 현재위치를 표시 해주는 버튼이 있다.

    해당 버튼을 클릭하면 내 현재 위치에 마커가 노출되고, 하단에 현재위치라는 메세지가 노출된다.

     


     

    이상으로 프로젝트 글을 마치겠습니다.

    보시고 궁금하신 것이 있다면, 댓글을 달아주세요. 제가 아는 선에서 최대한 답변드리겠습니다.

    오늘도 행복한 하루 되시고, 즐코하세요! 읽어주셔서 감사합니다~

    댓글