코틀린의 Sealed class

https://android.jlelse.eu/kotlin-sealed-classes-enum-2-0-1d8addd00602를 번역한 내용입니다. 예를들어 일요일, 월요일, 화요일 등 요일에 대한 정보를 갖는 객체 집합을 만들기 위해 enum클래스를 사용할 수 있다.  enum class Days(dayNo: Int) { SUNDAY(0), MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6) } 왜 sealed class가 필요할까 라는 생각이 들텐데 그전에 enum의 제약사항에 대해 알아보자 각각의 enum 상수에 대해 하나의 더보기…

여러 작업에 대해 단일 쓰레드를 사용하여 순차적으로 하나씩 진행하기

블루투스, 카메라, 마이크 등 단일 하드웨어에 의존적인 API사용에 대해서는 일반적으로 한번에 한가지 작업 밖에 할 수 없다. 예를 들어 동영상을 인코딩 하는 인코더 모듈이 존재하고, 이 인코더는 한번에 하나의 파일만 인코딩 할 수 있는 상황이라면 여러 동영상 인코딩 작업 목록을 순차적으로 하나씩 처리해야 할 것이다. [그림] 여러 요청들을 한번에 하나씩 더보기…

DataBindingComponent와 Dagger2와 함께 사용하기

DataBindingComponent와 Dagger2와 함께 사용하기 이번에 다룰 내용은 DatabindingComponent 사용하기 2탄으로 DataBindingComponent를 의존성 주입 프레임워크인 Dagger2와 함께 사용하는 방법에 대해서 알아본다. Prerequisite 데이터바인딩 라이브러리 DatabindingComponent 사용하기 Dagger2를 알아보자 DataBindingComponent /w Dagger2 DataBindingComponent 공식 문서를 참조하면, 다음과 같은 내용이 있다. If using Dagger 2, the developer should extend this interface and annotate 더보기…

Alfred의 Workflow을 이용한 ADB 활용

Alfred의 Workflow을 이용한 ADB 활용 Alfred는 MacOS의 생산성을 높여주는 유용한 유틸리티이다. Alfred는 일부기능이 무료지만, 파워팩을 구매하면 Workflow라는 강력한 기능을 사용할 수 있다. 매번 번거롭게 ADB 커맨드를 터미널에 타이핑 하고 있는 자신을 발견하고는 Workflow와 연동하면 되겠구나 싶었다.  처음에는 https://github.com/zjn0505/adb-alfred를 참고해보니, 유용한 기능들이 많아서 이를 그냥 사용할까 했지만, 내가 기대했던것보다 UX 뎁스가 더보기…

JVM, DVM, ART 이해하기

안드로이드를 처음 막 배우기 시작한 꼬꼬마시절 왜 구글이 왜 자바를 선택했고, 자바의 바이트코드가 무엇이며, 왜 폰에서 Dalvik과 ART를 선택하라는 거지??? 궁금했지만 누구하나 시원하게 알려주지 않았던 기억이 있어, 오늘은 안드로이드가 실행되는 환경의 내부를 좀 알아보고자 한다. JVM(Java Virtual Machine) JVM은 자바 바이트 코드를 실행할 수 있는 주체이다. 자바 바이트 코드는 플랫폼에 더보기…

렌더링 되는 View의 내부를 살펴보자

렌더링 되는 View의 내부를 살펴보자 더 나은 이해를 위해 이전 포스팅인 안드로이드 View가 렌더링 되는 과정을 먼저 참조할 수 있다. 렌더링하는 동안 사용되는 컴포넌트, 디스플레이 파이프 라인 및 UI와 하드웨어간 동기화가 발생하는 방식 등 더 자세한 내용을 파악하기 위해 다음과 같은 내용들을 알아야한다. UI스레드 모든 앱은 UI 스레드에서 View를 그리게 더보기…

안드로이드 View가 렌더링 되는 과정

안드로이드 View가 렌더링 되는 과정 XML로 작성한 View가 어떻게 최종적으로 화면에 렌더링 되는지 알아보자. 좋은 퍼포먼스를 내기 위해서는 내부의 동작 방식이나 원리를 잘 알고있어야 한다. 만약 하드웨어가 무엇을 어떻게 하고 있는지 잘모른다면, 이를 이용하기도 쉽지 않다. 렌더링을 하는방식에 대해 알아보기전에 View의 생명주기에 대해서 알아보자. View의 생명주기 많은 개발자들이 View가 생명주기를 더보기…

layout_constraintDimensionRatio 속성에 바인딩 표현식 적용하기

ConstrainLayout라이브러리에서는 기본 바인딩어댑터를 제공하지 않는 듯 하다. 그래서 다음과 같이 이미지뷰 비율 조절을 위한 바인딩 어댑터를 추가했다. public class ConstraintLayoutBindingAdapter { @BindingAdapter(“layout_constraintDimensionRatio”) public static void setConstraintDimensionRatio(View view, String ratio){ if(view.getParent() instanceof ConstraintLayout){ ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) view.getLayoutParams(); layoutParams.dimensionRatio = ratio; view.setLayoutParams(layoutParams); } } } public class MyViewModel { private int 더보기…

RxJava와 데이터 바인딩으로 유효성 검사하기

RxJava와 데이터 바인딩으로 유효성 검사하기 많은 안드로이드 애플리케이션이 회원가입, 은행, 쇼핑몰 주문 등과 같은 곳에서 Email, 전화번호, 이름, 비밀번호 등을 사용자로 부터 입력 받는다. 사용자의 단순한 실수 또는 어뷰징을 막기 위해 각 폼의 유효성 검사를 해야한다. 회원가입을 예로들었을 때 유효성 검사를 하는 시점을 다음중 하나를 택할 수 있다. 회원 가입 더보기…

Android에서 View의 생명주기

https://proandroiddev.com/the-life-cycle-of-a-view-in-android-6a2c4665b95e을 번역한 내용입니다. 안드로이드 앱을 실행할 때 우리가 가장 먼저 스크린에서 볼 수 있는 것이 View라고 말할 수 있다. View 클래스는 사용자 인터페이스 기본적인 구성 요소를 가지고 있다. 예를들어 스크린위 사각형 영역에서 그리기 및 이벤트 처리 같은 작업이 View를 통해 이루어진다. View는 Button, TextView, ImageView 등의 위젯을 작성하는 데 사용되는 더보기…