android(25)
-
리싸이클러뷰 멀티 뷰타입 사용해보기
뷰타입(view type)이란, 리싸이클러뷰를 구성하는 리스트들의 타입을 구분짓는 용도로 사용됩니다. 예를들면 카카오톡처럼 좌, 우 대화창이 나오는 구조는 각각의 뷰 타입을 갖는 뷰홀더를 생성하는 것이 편합니다. 따라서 오늘은 카카오톡과 비슷한(?) 채팅 기능을 만들어보겠습니다. 1. 기본 설정 저는 기본적으로 앱 개발을 할 때, dataBinding을 많이 사용합니다. 첫번째 이유는 안드로이드 최신 버전부터 'kotlin-extension'을 사용함으로써 발생하는 여러 문제들로 인해, gradle default setting에서 제외되었기 때문입니다. 사용하려면 이제 gradle에 직접 추가해줘서 사용해야합니다. 이렇게 구글이 배척하는 건 다 이유가 있다고 생각하기에..전 kotlin-extension..
2021.01.10 -
recyclerView와 dataBinding 같이 사용하기
1. dataBinding이란? 데이터 바인디이란, 레이아웃에서 선언한 구성요소를 데이터소스와 결합시켜 주는 객체를 자동으로 생성해주는 것을 의미합니다. 2. dataBinding을 사용하는 이유 xml에서 선언한 view들을(textView,editText,Button..etc..) 클래스에서 접근하려면, 기본적으로 view들에게는 모두 id값들을 적용하고, 이를 클래스에서 findViewById() 메서드를 통해서 일일히 연결시켜줘야 했습니다. 하지만 이는 공부용으로 간단한 프로젝트를 할 때에는 큰 문제가 없을지 모르나, 협업을 하는 정도의 큰 규모의 프로젝트를 진행하게 되면 여간 귀찮은 일이 아닙니다.. 또한 연결시켜주는 것만으로도 onCreate()메서드가 매우 길어집니다. 또한 한가지라도 연결을..
2021.01.03 -
Observer pattern 구조 및 사용
1. observer 패턴이란? 영어로 "관찰하다"라는 뜻을 갖는 observe는 개발에서도 무언가를 관찰하는데 사용됩니다. 여기서 무언가는 변수를 의미하며, 변수의 type은 primitive type이든 reference type이든 상관없습니다. 쉽게 설명하기 위해 아래 그림을 예시로 들어보겠습니다. 2. Observer의 구조 A라는 변수에 10이 담겨져 있고 이를 옵저버가 관찰하고 있습니다. 여기서 관찰자의 역할은 A의 값이 변경되면 A의 변화를 그 즉시 알아채는 역할을 합니다. 때문에 A에 변화에 대한 적절한 행동을 취하도록 만드는 것을 "observer pattern"이라고 합니다. 그렇다면 "적절한 행동을 취하도록"하는 것을 코드상으로 만들어야합니다. 그리고 이를 상속받은 A,B 옵저버들을..
2020.12.27 -
SINGLE_TOP, CLEAR_TOP,NEW_TASK로 액티비티 task 관리하기
1. 액티비티 전환 인텐트(intent)를 통해 액티비티(activity)를 전환하면 기존에 있던 액티비티는 액티비티 스택에 push되고 새로운 화면이 가장 최상단으로 올라와 우리 눈에 보이게 된다. 기존 액티비티를 A라 가정하고 전환할 액티비티를 B라 한다면, A는 왼쪽 그림 1번 처럼 스택에 쌓이고, B가 최상단으로 노출되어, 사용자에게 보일 것이다. 이처럼 A는 메모리상에 적재되어 사라지는 것이 아니라 저장된다. 때문에 뒤로가기 버튼을 눌렀을 경우 2번->3번 과정을 거쳐 다시 A가 최상단으로 노출되어 사용자에게 보여지게 된다. 액티비티 스택은 단순히 액티비티를 차곡차곡 쌓는 역할을 하기에 동일한 액티비티가 기존의 스택에 존재하더라도 그대로 쌓이게 된다. 때문에 스택에 대한 관리가 제대로 이뤄지지 ..
2020.12.13 -
android 기기 해상도에 따른 이미지 크기 설정하기
1. android dpi 안드로이드는 해상도 기준이 존재합니다. 먼저 android에서 기준이 되는 사이즈는 mdpi입니다. 이 mdpi를 기준으로 px과 dp 값을 계산할 수 있으며 실제로 디자이너들이 가장 많이 작업하는 사이즈는 mdpi를 기준으로 많이 작업하기 때문에 알아두면 미래 디자이너와 이야기 소통이 조금 원만하게 이뤄질 수 있겠지요? 그림에서 볼 수 있듯이 dpi기준을 일정 범위로 하는 것을 볼 수 있습니다. 이는 왜그럴까요? 이유는 모바일 기기의 해상도가 항상 정직한 크기로 나오지 않기 때문입니다. 위의 그림에서 보여지듯이 기준이 되는 사이즈는 120, 160, 240, 320, 480, 640dpi이지만 실제 모바일의 사이즈는 해당 dpi 기준의 범위에 속하는 형태입니다. 한 마디로 5..
2020.08.30 -
android ConstrainLayout
1. 반응형 레이아웃이란? 반응형 레이아웃이란 보여지는 화면이 기기에 따라서 동일한 비율로 나타내지는 것을 의미합니다. 모바일 시장이 점점 더 고도화 되면서, 다양한 해상도를 갖는 기기가 출시되고 있습니다. 때문에 반응형 레이아웃을 잘 구성하는 것 또한 중요한 문제입니다. 2. ConstrainLayout 컨스트레인 레이아웃은 LinearLayout 과 RelativeLayout의 장점을 모두 섞어 놓은 레이아웃입니다. 때문에 리니어레이아웃이 갖는 가중치(weight)의 장점과 랠러티브레이아웃이 갖는 체인(chain)을 연결하는 장점을 혼재시켰습니다. 처음 ConstrainLayout을 사용하면 다소 어렵게 느껴질 수 있지만 UI를 구성하기 위해서 레이아웃을 중첩시켜야 하는 일을 view들의 chain의..
2020.08.24