본문 바로가기

개발일지

(43)
[Kotlin] Compose 입문 #2 - Image, Card, Scaffold, TextField, 구조분해, 코루틴 스코프 CardView와 동일한 기능을 하는 Card // CardView와 동일한 기능 Card( modifier = Modifier .fillMaxWidth(0.5f) .padding(16.dp), // fraction으로 비율 지정 : 절반 shape = RoundedCornerShape(8.dp), // 모서리 둥글게 elevation = 5.dp, ) { Box( modifier = Modifier.height(200.dp) ) { // Image 소스를 가져올 때는 painter 사용 Image( painter = painterResource(id = R.drawable.umc), contentDescription = "설명 : 인생네컷", contentScale = ContentScale.Crop,..
[Kotlin] Compose 입문 #1 - Column, Row, 컴포저블, 리스트 Compose가 뭔데! xml 없이 화면 UI 구성할 수 있는 툴 제트팩 컴포즈 모던 안드로이드 컴포즈 입문을 통해 공부해 보도록 하겠다 일단 나는 플라밍고 버전을 쓰고있었고, New Project를 하니 Empty Compose Activity가 나오지 않았다 해커톤 협업하느라 버전 업그레이드를 했는데 다시 다운그레이드 해보자 Electric Eel 2022.1.1 버전으로 다운그레이드 했다 이 과정에서 안드로이드 이전 버전이 2021년까지만 뜨는 현상이 있었는데 언어 설정을 영어로 바꾸니 목록이 정상적으로 모두 떴다 아무튼 ! 버전 다운그레이드 하니 Empty Compose Activity 뜬다 짝짝 Column, Row, Text Like,, Linear Layout Column{} -> 수직으로 ..
[Kotlin] 형변환과 배열, 타입추론과 함수 명시적 형변환 : 자료형을 개발자가 직접 지정한다 var a: Int = 54321 var b: Long = a.toLong() // int -> long 형변환 암시적 형변환 : 자료형을 지정하지 않아도 자동으로 형변환 된다 코틀린은 암시적 형변환을 지원하지 않는다 배열 기본적인 배열 선언 var intArr = arrayOf(1, 2, 3, 4, 5) 특정한 크기의 공간을 가지는 비어있는 배열 만들기 var nullArr = arrayOfNulls(5) 꺾쇄 안에 배열에 할당할 자료형을 지정한다 : Int형 자료형 괄호 ()안에 배열 크기 지정 (5) : 크기 5 intArr[2] = 8 인덱스 위치는 0부터 시작 ! intArr[2]는 3의 값을 가졌다가, 8을 할당받으면서 8의 값을 가지게 된다 ..
[Android] Android Architecture Pattern MVC, MVP, MVVM 패턴 등 ... 검색을 하면 디자인 패턴이라고 하기도, 아키텍처 패턴이라고 하기도 한다 디자인 패턴(Design Pattern) : 소프트웨어 디자인에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책 : 문제들을 해결하는 데 상황에 맞게 사용될 수 있는 해결책 템플릿을 의미한다 : 프로그래머가 애플리케이션, 시스템을 디자인할 때 공통적인 문제들을 해결하는데 쓰이는 형식화된 패턴 아키텍처 패턴(Architecture Pattern) : 디자인 패턴과 유사하지만 범위가 더 넓으며, 소프트웨어 공학의 다양한 문제를 해결한다 : 일부 아키텍처 패턴은 SW 프레임워크 안에 구현되어 있다 : 아키텍처 패턴은 시스템의 이미지를 전달하긴 하지만 아키텍처 자체를 의미하지는 않는다 : 다..
[Android] Fragment 생명주기(Life-Cycle) Activity 생명주기와 비교했을 때 생성시 onCreateView() -> onViewCreated() -> onViewStateRestored() 추가 파괴시 onSaveInstanceState() -> onDestroyView() 추가 onCreate() : Fragment만 CREATED 된 상황으로, FragmentManager에 추가되었을 때 호출된다 onCreate() 이전에 onAttach() 먼저 호출된다! 아직 Fragment View가 생성되지 않은 시점으로, Fragment의 View 관련 작업은 부적절 Bundle 타입으로 savedInstanceState 파라미터가 함께 제공된다 : onSaveInstanceState() 콜백 함수에 의해 저장된 Bundle 값 파라미터는 Fr..
[Android] Activity 생명주기(Life-Cycle) 생명주기(Life Cycle) : 말 그대로 탄생-죽음에 이르기까지의 과정을 안드로이드 앱에서 적용한다 - Activity, Fragment, Service 총 세 가지 종류의 Lifecycle이 있다 Activity Lifecycle (액티비티 생명주기) : 액티비티가 시작되고 완전히 종료되기까지의 생명주기, 그 액티비티의 상태가 계속해서 변화한다. ex ) 다른 액티비티에 의해 가려짐 / 전화가 걸려와 액티비티가 가려짐 Lifecycle Callback Method 안드로이드 프레임워크에서 제공하는 콜백 메소드 : 액티비티의 상태가 변할 때마다 특정한 동작을 수행하도록 한다 이 수명주기 콜백 메소드를 적절히 구현하면 다양한 문제를 예방하고 앱이 안정적으로 동작하게 할 수 있다 : 꼭 구현해야 하는 메..
[Android] 4대 컴포넌트와 Intent 4대 컴포넌트 안드로이드 앱은 4대 컴포넌트로 이루어져 있다 각 컴포넌트 별 공통적인 특징은 1. 각 컴포넌트들은 하나의 독립적인 형태로 존재한다. 2. 각 컴포넌트들은 고유의 기능을 수행한다. 3. 각 컴포넌트들은 인텐트를 통해 서로 상호작용한다. 1. Activity (액티비티) : 사용자가 애플리케이션과 상호작용하는 단일화면 모든 안드로이드 애플리케이션은 액티비티로 구성되어 있다 사용자와의 상호작용을 담당하는 인터페이스 안드로이드 애플리케이션은 반드시 하나 이상의 액티비티를 포함하고 있고, 액티비티는 생명주기(Life Cycle) 관련 메서드들을 재정의 하여 원하는 기능을 구현할 수 있다 - Intent를 통해 다른 애플리케이션의 액티비티 호출 가능 - 2개 이상의 액티비티를 동시에 표기할 수 없다..
[Kotlin] 필드와 변수, 데이터 타입, 늦은 초기화 필드와 변수 val은 불변 필드! 필드의 타입이 필드 뒤에 오고, 콜론(:)으로 구분한다 val name: String = "아린 Kim" 타입 추론으로 더 간단하게 구현하기 타입을 지정하면 코틀린이 추론한 타입과 내가 예상한 타입이 다른지 검사할 수 있기 때문에 타입을 지정하는 게 좋다. val name2 = "아린 Kim" var는 가변 필드! 코틀린은 초기화하지 않은 참조를 쓸 수 없게 막는다. 변수 선언 + 값 지정 으로 초기화 하기 var name3 = "아린 Kim" name3 = "김아린" 변수 선언만 하고 사용하기 var name4: String name4 = "김아린" var 사용은 최대한 자제하는 것이 좋다. 참조 대상이 불변이면 프로그램을 추론하기 쉽기 때문 데이터 타입 Double ..