IT Study/Android
-
[Android] View Binding (feat. 뷰 바인딩 전 늘 하는 사전 작업)IT Study/Android 2024. 1. 27. 13:57
Android에서 뷰 바인딩을 하기 위해서는 사전 작업이 필요합니다. 이 사전 작업은 무엇이며, 각 코드는 어떤 역할을 하는지, 왜 이것이 필요한지에 대해 이번 블로그 글에서 다뤄보려고 합니다. 📁 Gradle 파일에 Sync 하기 viewBinding { enable = true } 🛰️ Activity 파일에 binding 가져오기 class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBindin..
-
[Android] Thread (feat. 스레드란?)IT Study/Android 2024. 1. 24. 14:56
안녕하세요. 이번 글에서는 Thread(스레드)에 대해 다뤄보고자 합니다. 바로 함께 보시죠. ✅ Thread (스레드) 개념이 필요한 이유 유튜브를 예시로 들어보겠습니다. 유튜브에서 영상을 보던 도중, 영상이 마음에 들어 오프라인 저장을 하려고 합니다. 그러나 작업 공간이 단일하게 존재할 경우(Main Thread), 영상 시청과 함께 오프라인 저장을 할 수 없습니다. 이러한 경우 또 다른 작업을 수행할 수 있는 스레드가 필요할 것입니다. 주요한 작업 외에 또 다른 주요 작업을 수행하기 위해 만든 작업 공간, Worker Thread가 필요합니다. 🛰️ Thread (스레드, 작업 공간) 애플리케이션이 시작되면 시스템은 애플리케이션에 대한 실행 스레드를 생성하며, 이를 기본이라고 합니다. (안드로이드 ..
-
[Android] counter(계수기, 숫자 세기) 앱 (feat. 화면 회전 시 초기화, 화면 회전 시 UI 가려지기, weight)IT Study/Android 2024. 1. 21. 15:09
안드로이드에서 counter를 만드는 것은 아주 간단합니다. 계수기를 생각하면 더 쉽게 느껴지죠. 계수기 1. + 버튼을 클릭할 경우, 숫자 1이 증가한다. 2. 초기화 버튼 클릭할 경우, 숫자 0으로 초기화된다. 🧮 Counter 코드, UI는 아래의 내용을 통해 확인하시죠. 저의 계수기는 아래와 같이 생겼습니다. (1) MainActivity.kt import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.widget.Button import android.widget.TextView class MainActivity : AppCompatActivity() { ..
-
[Android] View 그려지는 과정 (뷰가 그려지는 순서)IT Study/Android 2024. 1. 20. 16:08
안녕하세요. 이번 글에서는 View가 그려지는 과정에 대해 다뤄보려고 합니다. 안드로이드에서 View는 전위순회 (부모 → 자식 순으로, 위 → 아래, 왼쪽 → 오른쪽) 방식으로 그려집니다. 이렇게 전위순회 방식으로 그려지는 View는 depth가 깊어질수록 확인해야 할 내용이 많아지므로 안드로이드는 flat한 구조로 작성하는 것이 좋습니다. View가 그려지는 순서를 보도록 하겠습니다. 1. measure 모든 뷰는 자신의 width, height (크기)를 계산합니다. measure(측정) 과정에서는 부모 - 자식 간의 뷰 크기에 대한 정보를 전달하기 위해 2가지 클래스를 사용하는데요. ViewGroup.LayoutParams 자식 View가 부모 View에 알리는 내용 (자신이 어떻게 측정되고, ..
-
[Android] 액티비티의 라이프 사이클 (생명주기, Life cycle)IT Study/Android 2024. 1. 20. 14:47
안녕하세요. 이번 블로그 글에서는 Android 개발 시 주로 사용되는 Activity의 생명주기에 대해 알아보도록 하겠습니다. 먼저, Activity의 Life Cycle을 확인하기 위해 아래와 같은 테스트 시나리오를 작성하였습니다. 📊 테스트 시나리오 1. Activity 실행, 종료 시의 Life cycle 2. 다른 App 실행 시 (= 홈 버튼 클릭 시)의 Life cycle 3. 다른 Activity 실행 시의 Life cycle 또한 Activity의 Life Cycle을 확인하기 위해 아래와 같은 테스트 코드를 작성하였습니다. MainActivity.kt package fastcampus.part0.kotlin import android.content.Intent import android..
-
[Kotlin] 코틀린 중급 (feat. 람다, 확장함수, Scope function, 초기화 지연 등...)IT Study/Android 2024. 1. 15. 15:37
람다 package fastcampus.part0.kotlin fun main() { // 1. 람다 // 익명 함수 (일회용 함수) // 변수처럼 사용할 수 있다. (함수의 argument, return으로 사용) val a = fun() { println("hi") } val b: (Int) -> Int = { it * 10 } // (input) -> return = { 함수 구현부 } val c = { i: Int, j: Int -> i * j } // { input -> 함수 구현부 } val d: (Int, String, Boolean) -> String = { _, string, _ -> string } // _ : 미사용 파라미터 a() println(b(10)) println(c(2, 5..
-
[Kotlin] 코틀린 기초 (feat. 함수, 클래스, Null 등...)IT Study/Android 2024. 1. 14. 22:53
함수 1. 유닛 반환 타입(Unit Return Type): 반환값 없는 함수에 대한 타입 표현, 생략 가능 2. 기본 인수(Default Arguments): 함수 매개변수에 기본값 설정으로 함수 오버로딩 필요성 감소 3. 명명된 인수(Named Arguments): 매개변수 이름을 통한 인수 전달로 인수 순서 자유로움 4. 단일 표현식 함수(Single Expression Functions): 함수 본문 축약 표현으로 코드 간결성 향상 package fastcampus.part0.kotlin fun main() { println("Hello") test1(1, 2) test1(1, 3) test2(1) test2(l = 1, n = 3) // 2-3. 함수 안에서 선언 값에 대해 작성 가능 (순서 무..
-
[Android] 안드로이드... 개념적인 것도 공부해보자!IT Study/Android 2023. 12. 10. 12:03
1. 데이터 클래스 데이터 클래스는 주로 데이터를 보유하고 단순한 메타데이터를 처리하는 데 사용되는 클래스입니다. 1-1. 자바에서의 데이터 클래스 자바에서는 데이터를 담는 필드를 정의한 뒤, 생성자 그리고 필요에 따라 Getter, Setter, equals, hashCode, toString 등의 메서드를 구현해야 합니다. (번거로운 느낌이죠...?) public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // Getter, Setter, equals, hashCode, toString 등의 메서드 생략 } 1-2. 코..