전체 글(27)
-
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 -
room과 Rxjava2 같이 사용하기
1. ROOM이란? room 라이브러리는 SQLite 뿐만아니라 데이터베이스 액세스를 지원하는 추상화 계층을 SQLite에 지원하는 방식입니다. 이는 데이터베이스 객체를 자바나 코틀린 객체로 맵핑 시켜준다고 하여 ORM(Object Relational Mapping) 라이브러리라고도 합니다. 2. SQLite와 다른점은? 1) SQLite인 경우에는 에러를 컴파일 도중에 확인할 수 없지만 room 같은 경우 컴파일 경우에 유효성검사를 하기 때문에 에러를 검출 할 수 있습니다. 2) room은 스키마를 작성하여 DB에 대한 전반적인 구조와 제약조건을 명세하고 사용하게 됩니다. 그런데 이러한 스키마가 일부 변경될 경우, 수동적으로 DB의 쿼리를 업데이트 시킬 필요없이, 간단한 작업만으로도 쿼리를 조작할 수 ..
2020.08.21 -
ViewModel 사용하기
1. 개념 viewModel은 기본적으로 UI관리를 별도로 하기 위해서 만들어졌습니다. 기존에 UI를 관리하기 위해서는 액티비티나 프래그먼트 등 복잡한 라이프 사이클에 따라서 알맞게 처리되어져야 했기 때문에 매우 복잡했던 것이죠. 또한 화면 회전이나 비정상적인 종료로 인한 UI상 정보를 저장하고 불러오는 일 또한 관리하기 힘들었습니다. 왜냐하면 bundle에 저장할 수 있는 양은 소량의 데이터를 저장할 수 있는 용도이기 때문에 대량의 정보를 저장하고 이를 다시 복구하기에는 한계가 있었습니다. 이런 다양한 이유로 별도의 라이프사이클에 따라서 UI를 조금 더 편리하게 사용하기 위해서 viewModel이 등장하게 되었습니다. - viewModel LifeCycle 뷰모델의 라이프사이클을 보면 액티비티의 라이프..
2020.08.19 -
Retrofit2 사용해보기
레트로핏은 서버와 클라이언트 간의 데이터를 주고 받기 위해서 사용되는 하나의 도구라고 생각하면 쉽습니다. 그런데 레트로핏하면 항상 따라다니는 용어가 있죠. 바로 RESTful API입니다. 혹은 REST API에 대해서도 많이 들어 봤을 것입니다. 그럼 레트로핏은 RESTful API, REST API 둘 중 어느 표현이 더 정확한 표현일까요? 이를 알기 위해서 먼저 REST API부터 차근차근 알아보도록 하겠습니다. 1. REST API란? REST API는 기본적으로 웹 상에서 자원을 주고 받기 위해 HTTP 아키텍쳐를 사용하는 것을 의미합니다. 조금 더 풀어서 설명하면 HTTP Method인 GET, POST, PUT, DELETE 등을 이용하여 자원을 처리하는 것입니다. 이러한 기준을 따라서 만든..
2020.08.19 -
DataBinding 사용해보기
1. 개념 이름 자체에서 직관적으로 알 수 있듯이 data들을 결합시켜 주는 역할을 하는 라이브러리입니다. Databinding을 사용하지 않았을 때는 findViewById 메서드를 통해서 ViewGroup내에 존재하고 있는 위젯들을 필드값과 연결시켜 줬습니다. 하지만 한 두개의 위젯이 아닌 수십 개의 위젯이라면 해당 개수만큼의 findViewById를 사용해서 위젯들을 연결시켜줘야 하는데 이렇게 하면 정말 코드가 길어지고 복잡해 보입니다. 뿐만아니라 위젯에 달아야하는 리스너를 등록하는 문제에 있어서도 코드를 길어지게 하는데 한 몫합니다.. 이렇게 가독성이 떨어뜨리는 코드는 협업을 중요 시 하는 현재 추세에서는 매우 마이너한 방법입니다. 그래서 이런 문제들을 해결하고자 DataBinding이 나오게 되..
2020.08.17