안드로이드
-
[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] 11047번 동전 0 (feat. 노선 정했다... )IT Study/백준 알고리즘 2023. 12. 20. 16:07
자바스크립트 알고리즘... 안녕... 이제는 널 보내줄게... 고마웠고... 한동안 바바이... 아디다스... ⭐️ 1. val, var 차이 val: 상수, 초기화 후 값 변경 불가 (그러나 변수의 참조가 가리키는 객체의 내부 값 변경 가능) var: 변수, 초기화 후 값 변경 가능 (그러나 다른 타입의 값을 넣을수는 없다.) 2. 입력 받기 입력을 받는 기본 문장입니다. 앞으로 Kotlin으로 문제를 풀이하기 위해 위의 코드를 기억하거나 복사해서 사용하도록 하겠습니다. import java.io.BufferedReader import java.io.InputStreamReader fun main() { val br = BufferedReader(InputStreamReader(System.`in`))..
-
[Project/Android] `OutOfMemoryError` 오류 해결하기Daily/Project 2023. 12. 19. 15:52
1. Physical 안드로이드 기기 테스트 중 오류 안드로이드 스튜디오에서 제공하는 Virtual(가상) 안드로이드 기기가 아닌, Physical(실제) 안드로이드 기기에서 테스트하던 중 다음과 같은 에러가 발생하였습니다. java.lang.OutOfMemoryError: Failed to allocate a 23425512 byte allocation with 16766392 free bytes and 21MB until OOM 주목해야 할 단락은 위 메시지입니다. 해당 오류 메시지에서는 23,425,512 바이트를 할당하려고 했지만, 현재 사용 가능한 메모리가 16,766,392 바이트 밖에 남아있지 않다는 것을 나타냅니다. 이에 따라 시스템은 OutOfMemoryError를 발생시켰습니다. 2. ..
-
[Project/Android] GameActivity 만들기 (Feat. 조이스틱 만들기)Daily/Project 2023. 12. 14. 00:27
위와 같이 게임 필드에서는 아래와 같은 로직들이 필요했습니다. 1. 조이스틱을 통해 캐릭터를 움직이고 2. 상하좌우 방향에 맞추어 걷는 듯한 모션을 위해 캐릭터의 모습을 바꿔줘야 한다는 것 3. 정지했을 때에는 정지한 default 모습을 보여야 한다는 것 4. 몬스터와 만났을 때, GameDetailActivity라는 다른 액티비티로 전환됨과 동시에 보유하고 있던 티켓을 사용해야 한다는 것 5. 코인을 먹었을 때에는 코인의 수가 올라가야 한다는 것 이번 블로그 글에서는 조이스틱을 다뤄보도록 하겠습니다. 조이스틱 만들기 안드로이드에서 조이스틱을 만든 다른 사례가 있는지 확인하기 위해 구글 검색을 시작했습니다. 찾고 찾던 와중, 아래와 같은 블로그 글을 발견했죠. 정말 ... monotics님의 블로그 글..