본문 바로가기

분류 전체보기

(24)
코틀린 원시 타입 코틀린은 자바와 달리 primitive와 wrapper 타입의 구분이 없다. 자바에서 primitive 타입의 변수 에는 값이 대입되지만, 참조 타입의 변수에는 메모리상에 객체 위치가 들어간다. 참조 타입이 필요한 경우 wrapper 타입으로 primitive타입 값을 감싸서 사용한다. 예를 들면 아래와 같을 것이다. String sNum = 123456789; int iNum = Integer.parseInt(sNum); Boolean isCheck = null; //객체이므로 null이 허용된다. 코틀린은 primitive 타입과 wrapper 타입을 구분하지 않으므로 항상 같은 타입을 사용한다. 아래는 코틀린에서 정수를 표현하는 Int를 사용하는 예제이다. val num: Int = 123 val ..
코틀린 object 코틀린에서 object는 클래스를 정의하면서 동시에 객체(인스턴스)를 생성한다. 대표적으로 싱글턴 객체를 만드는 예를 살펴보자. OOP에서 객체가 하나만 필요한 경우가 많다. 이때 싱글턴 패턴을 통해 이를 구현한다. 자바에서는 보통 클래스 생성자를 private로 제한하고 정적인 필드에 그 클래스의 유일한 객체를 저장하는 싱글턴 패턴을 통해 이를 구현한다. 아래 코드를 참조하자. class SingletonCls { private static SingletonCls singletonCls; private StingletonCls(){} public static SingletonCls instance() { if (singletonCls == null) { singletonCls = new Singleto..
코틀린 클래스, 코틀린 프로퍼티 코틀린의 장점은 자바 대비 더 적은 양의 코드로 클래스와 관련된 대부분의 작업을 수행할 수 있다. 아래 자바코드를 살펴보자. 필드가 늘어나면 늘어날 수록 생성자 본문에 반복적으로 들어가는 경우가 많다. public class Member { private String name; private int age; public Member(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } 자바에서 Member 클래스를 사용하는 방법은 아래와 같다. Member member = new Member("홍길동", 20);..
코틀린은 무엇인가? 코틀린은 젯브레인스에서 만든 프로그래밍 언어다. 2016년에 정식 발표 되었다. 코틀린은 자바에서 실행되는 새로운 프로그래밍 언어다. 코틀린은 간결하고 실용적이며 자바 코드와의 상호운용성을 중시한다. 현재 자바가 사용 중인 곳이라면 코틀린을 사용할 수 있다. 대표적으로 안드로이드 개발, 서버 사이드 개발에서 코틀린을 사용할 수 있다. 특히 안드로이드는 기존 자바에서 코틀린으로 공식언어를 교체하였다. 현재 최신 라이브러리인 Jetpack Compose는 코틀린으로 만들어져 있다. 코틀린은 타입 추론을 지원하는 정적 타입 지정 언어다. 소스코드를 간결하게 유지할 수 있다. //Java int size = 5; String name = "Kotlin" float rate = 3.14f //Kotlin var ..
Jetpack Compose Scaffold(with SnackBar, CoroutineScope) Scaffold는 기존 안드로이드 UI에서 복잡하게 구현했던, DrawerLayout, TopBar, BottomBar등을 간단하게 구현할 수 있는 도구이다. 구성요소로는 다음과 같다. scaffoldState: DrawerState 설정(DrawerState.Opened, DrawerState.Closed) topBar: 상단 액션바 floatingActionButton: 플로팅 버튼 floatingActionButtonPosition: 플로팅 버튼 위치 지정 drawerContent: Drawer UI Content: scaffold 주요 UI bottomBar: 하단 바 snackBar는 scaffoldState를 통해 호출 가능하다. snackBar는 suspend 함수이기 때문에 비동기로 처리 ..
Jetpack Compose AlertDialog 기존에 Dialog를 사용하려면 Dialog 클래스 생성 AlertDialog.Builder 사용, DialogFragment 사용 등 괜시리 복잡하다. Compose는 기존에 복잡한 UI 구조를 간단하게 만들어 사용할 수 있고 직관적이고 어렵지 않아서 좋다. 최초 Composition 발생 시 AlertDialog도 로딩된다. State객체를 활용하여 AlertDialog를 보여줄지 말지 결정하면 된다. 소스는 직관적이라 따로 리딩할 것은 없고, 참고사항으로 onDismissRequest는 다이얼로그 외부영역 터치 시 동작하는 부분이다. 외부 터치 시 닫고 싶으면 State객체를 조작하면 된다. @Composable fun MainView() { Column { val showDialog = remem..
Jetpack Compose ViewModel에서 State객체를 통한 Compose UI 업데이트 Compose에서는 State객체를 이용하여 Observable하게 동작하도록 구현하는 것을 권장한다. Compose UI는 State객체를 관찰하다가 State객체의 값이 변하면 Compose UI는 Re-Composition을 발생시켜 UI를 업데이트 한다. developer 사이트의 Jetpack Compose를 소개하는 소스를 참고하여 예제를 만들어 보자. 본 예제에서는 별모양의 이미지를 클릭하면 On/Off 하는 기능을 만들어 볼 것이다. 먼저 ViewModel을 사용하기 위해 build.gradle 파일에 아래 항목을 추가한다. (참고: https://developer.android.com/jetpack/compose/libraries#viewmodel) dependencies { implem..
Jetpack Compose Navigaion 화면 이동 Navigation을 이용하여 Compose 화면 이동을 해보자. 사용방법은 간단하다. Navigation은 Compose가 나오기전부터 제공하고 있었다. Compose용 Navigation을 사용하면 된다. startActivity와 같은 구식 방식은 버리고, 선언형 프로그래밍에 어울리는 Navigation을 활용해보자. 1. 앱 모듈의 build.gradle에 아래 항목을 삽입하자. (참고: https://developer.android.com/jetpack/compose/navigation?hl=ko#setup) dependencies { def nav_version = "2.5.2" implementation "androidx.navigation:navigation-compose:$nav_vers..