지난 날 ConstarintLayout이 무엇인가에 대하여 정리를 한 적이 있었다.https://superohinsung.tistory.com/231 [Android] ConstraintLayout 이란ConstraintLayout이란 ConstraintLayout은 부모 뷰그룹 안의 다른 요소들과의 상대적인 제약조건을 설정함으로써 화면에 배치되도록 하는 레이아웃을 말합니다. 기존의 레이아웃(Linear, Relative 등등)에 비superohinsung.tistory.com 그렇다면 오늘 ConstraintLayout의 장점에 대해서 알아보자. 가장 큰 장점으로는 뷰의 깊이(depth)를 줄일 수 있다. 이에 따른 2가지의 장점이 다시 따라온다. 성능 최적화예를 들어, 위와 같은 계산기 UI를 구현하..
LayoutManager이란RecyclerView의 LayoutManager는 RecyclerView의 아이템을 배치하고 스크롤 동작을 관리하는 데 중요한 역할을 한다. LayoutManager를 사용하면 다양한 레이아웃을 쉽게 구현할 수 있습니다. Android에서 주로 사용되는 LayoutManager는 세 가지가 있다. LinearLayoutManager아이템을 수직 또는 수평으로 일렬로 배치한다.기본적으로 수직 방향으로 스크롤되며, 메서드를 통해 수평 방향으로 설정할 수 있다. 수직(세로) recyclerView.apply { layoutManager = LinearLayoutManager(context) }기본적으로 우리가 항상 보던 리사이클러뷰를 생..
블로그에 지난 졸업프로젝트에서 했던 주요 기능부분을 기록으로 남기려고한다.조금? 오랜 시간이 지났지만 기억을 되살려서 기록을 해보자. 졸업 프로젝트에서는 다른 여타 프로젝트와 달리 RecyclerView에 대해서 사용할 일이 많았다.그렇다면 RecyclerView에서 자주 사용하는 메서드 onCreateViewHolder와 onBindViewHolder의 차이에 대해서 알아보자. onCreateViewHolder와 onBindViewHolderclass CommentAdapter( private val onClickMenu: (CommentItemUiState) -> Unit) : ListAdapter(diffCallback) { override fun onCreateViewHolder(..
Android DIP이란?dp(or dip)는 Density-independernt Pixels의 줄임말로 같은 면적에 포함되어 있는 물리적인 픽셀의 밀도로부터 독립적인 크기를 가진 픽셀 단위이다.그렇다면 픽셀은 무엇일까?화소라고도 하며, 디지털 이미지를 나타내는 데 사용되는 최소 단위이다.픽셀은 해상도와도 관련이 있는데, 동일한 이미지라 하더라도 픽셀의 수가 많은 것이 해상도가 더 높다. 즉, 아래와 같은 그림이 있을 때 왼쪽보다는 오른쪽이 해상도가 더 높다고 할 수 있다. 위와 같은 단위가 필요한 이유는 비슷한 크기의 스마트폰이더라도 해상도가 다르면 물리적인 픽셀 수도 다르기 때문이다. 자세히 설명하자면, 픽셀 단위로 button/폰트를 구성하면 화면의 픽셀 수가 많은 경우가 그렇지 않은 경우보다 보..
RecyclerView with multiple item types in Kotlin이란?개발을 하다보면 여러 개의 Recycler View를 만들게 되어 프로젝트 구조가 복잡해지기 마련이다. 예를 들면 하나의 Recycler View에 여러 타입의 뷰를 띄워야 하는 경우도 있습니다. 예를 들면, 네이버 카페 어플에서 글을 본다고 할 때, 사진+제목, 제목, 광고와 같은 타입으로 아이템이 나눠질 수 있다. 하나의 View에는 하나의 DataItem밖에 들어가야하지 않을까?나도 처음에는 그렇게 생각하였지만 공부를 하면서 그렇게 하지 않아도 된다는 점을 발견하였다. 여러가지 방법이 있다. 하지만 이번 포스팅에서는 "Sealed Class를 활용해서 ViewHolder와 Item 묶어내는 방법"으로 Mutip..
SharedPreferences란안드로이드 앱 개발을 진행하다 보면, 앱의 데이터들을 저장하여 관리해야 할 상황이 존재한다. 데이터의 양이 많거나 중요 데이터의 경우 서버나 DB에 저장해야겠지만, 간단한 설정 값이나 문자열 같은 데이터를 저장하기 위해 DB를 사용하기는 부담스럽기 때문에 SharedPreferences를 사용하는 것이 적합하다.보통 초기 설정값이나 자동 로그인 여부 등 간단한 값을 저장하기 위해 사용Application에 파일 형태로 데이터를 저장한다.Application이 삭제되기 전까지 저장한 데이터가 보존된다.Key-value 방식xml 파일 형태로 데이터를 저장 (data/data/패키지명/shared_prefs/SharedPreferences파일 형태로 저장되므로 너무 많은 데이..
Java에서 문자열을 처리했던 클래스들에 대해서 정리를 해보자. StringJava에서 String은 불변(immutable)한 문자열을 처리하기 위한 클래스이다. 즉, String 객체가 생성되면 그 값은 변경되지 않는다. StringBufferJava에서 StringBuffer는 가변(mutable)한 문자열을 처리하기 위한 클래스이다. 즉, 새로운 문자열을 추가하거나 변경하게 되면 “기존의 객체”로 추가 및 변경이 된다. StringBuilderJava에서 StringBuilder는 가변(mutable)한 문자열을 처리하기 위한 클래스이다.StringBuffer와 마찬가지로 새로운 문자열을 추가하거나 변경하게 되면 "기존의 객체"로 추가 및 변경이 된다.StringBuffer와 다르게 멀티쓰레드 환..
Android Thread에 대해서 알아보자.일반적으로 Thread는 메인 스레드와 백그라운드 스레드로 나누어진다. 메인 스레드앱이 처음 시작되면 시스템이 스레드 하나를 생성하는데 이를 메인 스레드라고 한다. 메인 스레드의 역할은 크게 두 가지로 액티비티의 모든 생명 주기 관련 콜백을 실행을 담당하거나, 버튼, 에디트텍스트와 같은 UI 위젯을 사용한 사용자의 이벤트와 UI드로잉 이벤트를 담당한다. 그렇기 때문에 UI 스레드라과 불린다. 백그라운드 스레드작업량이 큰 연산이나, 네트워크 통신, 데이터베이스 쿼리 등은 처리에 긴 시간이 걸린다. 이 모든 작업을 메인 스레드의 큐에 넣고 작업하면 한 작업이 처리가 완료될 때까지 다른 작업을 처리하지 못하는 현상이 발생한다. 이러한 현상을 피하기 위해서 백그라운드..