[Android] Fragment with ViewPager Example

오늘은 며칠동안 틈틈이 준비한 ViewPager와 Fragment를 이용한 화면전환 예제를 만들어보려 합니다.
며칠동안이라 했지만 거창하게 만들 시간은 없어서 정말 간단히 하려고 노력했습니다.

ViewPager

뷰페이저란 사용자가 Swipe나 Tab 등을 통해서 현재 보는 화면 다음 화면을 Smooth하게 시각적으로 보여주도록 도와줍니다.
주로 Application을 설치하고 튜토리얼을 진행하는 과정에서 좌우로 휙휙 넘기면서 설명하는 곳에서 많이 사용합니다.

화면구성

우리가 만들 화면은 아래와같이 3 페이지입니다.

각 페이지를 색깔로 구분하였고, 각각의 Fragment를 따로 작성하였습니다.

[Android] Launcher Icons

이전에도 런쳐 아이콘을 등록한 적이 있지만 최근에 Android Studio에서 바뀐점이 있어 포스팅합니다.

Launcher Icons

런처 아이콘은 사용자에게 앱을 대표하여 보여주는 그래픽 아이콘입니다.
Google Developers 문서에 이런곳에 사용된다고 합니다.

  1. 기기에 설치된 앱의 목록과 메인 스크린
  2. 앱에 대한 단축키를 나타낼 수 있음
  3. 런처 앱에서 사용할 수 있음
  4. 앱 첫인상을 뚜렷이 심어줄 수 있음
  5. 사용자가 Google Play에서 앱을 찾는데 도움을 줄 수 있음
TIL

[Android] About ConstraintLayout

오늘은 최근에 사용하기 시작한 ConstraintLayout에 대해 이야기해볼까 합니다.
“이제야 ConstraintLayout을 사용하기 시작했다구요!?”
네.. 그렇습니다.
두달 전까지만 해도 저는 LinearLayout과 RelativeLayout을 이용해 UI를 그렸습니다.
하지만 새 프로젝트를 시작하며 ConstraintLayout과 CoordinatorLayout을 사용해보고는 자연스럽게 LinearLayout과 RelativeLayout의 사용 빈도가 줄어 들었습니다.
특히 RelativeLayout은 더욱요.

ConstraintLayout

이 단어를 검색하기만 해도 수많은 사이트들이 쏟아져나올겁니다.
한 2년 전 쯤에 처음 접한것 같아요.
한창 LinearLayout과 RelativeLayout을 사용하는 제게는 굳이 왜 써야되는지 이해가 안갔습니다.

TIL

[Android] Fragment Example

오늘 포스트는 이전 포스트에서 언급했던 Fragment에 대해서 간단한 예제를 만들어 보려고 합니다.
주말에 포스팅 하려고 했는데 시간도 시간이고 개인적인 스터디를 따로 하고 있어서 짬이 나지 않네요 ㅜㅜ.
개인적인 스터디에 대해서 필요한 포스팅은 또 따로 진행하도록 하겠습니다.
각설하고 시작해봅시다.

어떤 예제를 만들 것인가?

사실 너무 간단한 예제입니다.
스크린샷부터 볼게요.

2개의 Fragment를 만들고(분홍색, 파란색)
Fragment 1 버튼을 눌렀을 때는 분홍색 Fragment가
Fragment 2 버튼을 눌렀을 때는 파란색 Fragment가 보이도록 할 겁니다.

[Android] About fragment

좋은 예제나 라이브러리에 심심치 않게 Fragment를 사용하는것을 보았습니다.
잘은 모르겠지만 Activity와 비슷한 것 같은데..
명확한 차이를 알 수 없어 알아보았습니다.

일단 Fragment가 나오기 전 상황을 좀 알아야 겠군요.

Activity, Context

안드로이드 시작과 함께 Activity가 무엇인지 Context가 무엇인지 알아야 했습니다.
기존에 C, C++, Java를 배울때와는 사뭇 다르고 저에게는 러닝 커브또한 굉장히 높았습니다.
점점 익숙해질 무렵 Activity는 어플리케이션 구성 요소로 단어 그대로 사용자가 어떠한 행위를 하기 위해 작용할 수 있는 화면이고
Context는 Activity에 따라 정보를 담고 있는 인터페이스라는것을 알게되었습니다.
이 두가지의 개념으로 화면단위를 컨트롤하고 문제없이 개발이 되는 줄 알았습니다.

어플리케이션의 덩치는 날로 커져갔습니다.
단순히 Multi Activity로 해결되던 어플리케이션이 그 이상의 수준을 넘어 Super Ultra Multi Activity로 엄청난 서비스를 제공하는 어플리케이션이 등장합니다.

그런데 여기서 문제점이 생깁니다.
많이 흡사한 페이지가 여러개인데.. 그때마다 Activity와 Layout이 하나씩 생성되고 중복 코드들이 기하급수적으로 늘어나게 됩니다.

이때 Google에서 Fragment를 조용히 내놓습니다.

TIL

[Android] 앱이 갑자기 꺼지는 이슈

이번 포스트는 며칠전에 맞닥들인 이슈와 해결을 서술할까 합니다.

WTF?

구글맵을 사용하는 앱을 한창한창 개발중에 이슈가 터졌습니다.
구글맵 화면에서 마커를 보여주거나 이미지를 보여주는등 이런저런 처리를 하는데 앱의 퍼포먼스가 갑자기 떨어지기 시작했습니다.
그러더니 앱이 갑자기 꺼지는 사태가.. 심지어 앱이 비정상 종료되었고 다시 실행하겠냐는 팝업이 뜨지 않았습니다.
테스트로 사용한 폰은 무려 Galaxy S8+였는데..
사실 이 페이지를 그때 생성한것이 아니고 한달전부터 생성해서 써오던 페이지였는데 이런 크리티컬한 이슈라니 조금 황당했습니다.

원인을 찾자

항상 하던대로 로그캣을 켜봤습니다.

[Android] About Material Design

Material?

머티리얼 디자인은 기존에 안드로이드의 사용성, 가독성이 떨어지는 디자인을 개선하고 일관되도록 하는 지침입니다.
빠른 디바이스의 성장에 발맞추어 UI/UX도 진화해야 한다고 생각한 구글의 주도하에 이루어지고 있습니다.
구글은 모바일과 데스크탑 그리고 이외에 다양한 디바이스에서 적용할 수 있고 또 그렇게 하도록 가이드하고 있습니다.

머티리얼 디자인은 질감이 느껴지는 표면(tactile surfaces)과 대담하고 선명한 그래픽 디자인(bold graphic design),
그리고 아름답고 직관적인 사용자 경험을 위한 자연스러운 애니메이션을 특징으로 합니다.

설명이 어렵다구요? Google Developers에서 제작한 영상을 보면 더 쉽게 와닿을겁니다.