728x90

전체 글 62

[Kotlin] 코틀린 기초 2 - 코드를 간결하게 만드는 방법 feat.함수, 클래스, 객체, 객체지향

함수 Function (함수) : 필요할 때마다 재사용하고 실행할 수 있는 독립적인 모듈. 입력 데이터를 받고 출력을 반환할 수 있다. Parameter (파라미터) : 함수로 전달되는 데이터. 함수 내에서 특정 작업을 수행하는데 사용된다. Argument (아규먼트) : 함수가 호출되었을때 실제로 전달/사용하는 일련의 값들. 즉 인수, 전달인자 Return Type (반환 타입) : 함수가 호출될 때 돌려주는 값의 타입이다. ‘fun’ 키워드를 사용해 함수를 선언할 수 있으며 괄호 안에서 파라미터와 반환값의 타입을 설정해야 한다. 함수와 파라미터의 이름은 Camel Case를 사용하여 작성하는 것이 권장되며 Boolean의 경우 is, has, are 같은 접두사로 시작하는 것이 좋다. fun func..

Kotlin 2024.03.23

[Kotlin] 코틀린 기초 1 - 변수, 자료형, in/when 키워드

Gradle : 새프로젝트를 생성하거나 어플리케이션을 실행할때마다 매번 실행됨 앱을 사용할 수 있는 환경을 만들어준다. onCreate 의 기본적인 역할 : 해당 액티비티를 먼저 실행하도록 하는 것 : super.onCreat() Surface : 어플리케이션의 배경을 위해 사용하는 것 / MainActivity의 Surface(표면) Greeting : Composable (컴포저블) / 단순히 화면에 보이는 요소 PreView : 앱을 실행하지 않고도 애플리케이션의 시각적인 표현을 보여줌 변수를 인코딩 한다는 것 ⇒ 나중에 프로그램에서 사용할 수 있는 컨테이너나 보관함에 데이터를 저장하는 개념 변수를 생성하는 2가지 방법 val : 불변하는 값에 사용 ⇒ 재할당 불가능 (불변성 / 읽기 전용 / 상수..

Kotlin 2024.03.22

[Android] ViewPager2에 custom indicator 연결하기

https://ehdnsdlek.tistory.com/31 저번 게시글에는 ViewPager2를 이용해서 자동으로 Slide 되게끔 만들어 보았습니다. 거기에 추가로 좌측 하단에 Indicator를 만들어 보겠습니다 1. customView를 만들기 위해 클래스 만들기 기초 코드는 https://black-jin0427.tistory.com/95 여기서 가져왔습니다. // CircleIndicator.java public class CircleIndicator extends LinearLayout { private Context mContext; private int mDefaultCircle; private int mSelectCircle; private List imageDot = new ArrayL..

Android 2024.03.18

[Android] ViewPager2 - Runnable 객체로 자동으로 이미지 slide 하기

탑툰을 클론코딩 하는 도중 이미지가 자동으로 slide 되는 UI를 구현해야 했다. ViewPager2를 이용해서 구현해보도록 합시다 1. ViewPager2 선언 MainActivity에 HomeFragment가 존재하고, HomeFragment안에 ViewPager2를 다음과 같이 작성했습니다. // fragment_home.xml 2. ImageView가 포함된 페이지 레이아웃 만들기 ViewPager2의 각 페이지에 사용될 ImageView를 포함하는 레이아웃 XML 파일을 만들어야 합니다. 저는 사진만 들어가므로 ImageView 하나만 작성했습니다. 즉, Fragment에 뷰들을 관리하기 위해 ViewPager2를 작성했고, 뷰를 띄워줄 레이아웃을 지금 작성합니다. // slide_image_..

Android 2024.03.17

[Android] View의 LifeCycle(생명주기)

View의 LifeCycle 안드로이드에서 View의 라이프사이클은 뷰가 생성되고, 화면에 나타나며, 상호작용하고, 사라지기까지의 과정을 포함합니다. 이 과정은 여러 콜백 메소드들을 통해 관리되며, 각 메소드는 뷰의 특정 상태 또는 단계에 대응합니다 시작하기 onAttachedToWindow() View가 window에 연결될 때 호출되며, 뷰가 화면에 표시될 준비가 되었음을 알린다. View 초기화 작업을 수행하는 데 사용할 수 있다. addView() 함수를 호출하여 View를 View 그룹에 추가할 때 호출한다. 측정하기 measure() / onMeasure() 이 단계에서 뷰의 크기가 결정된다. measure() 메소드는 시스템에 의해 호출되며 실제 크기 계산은 onMeasure()에서 수행된다..

Android 2024.03.16

[Android] Fragment에서 Binding 객체를 null로 설정해야 하는 이유

Fragment에서 onDestroyView에서 binding 객체를 null로 설정하는 것은 메모리 누수를 방지하기 위한 중요한 관행입니다. Fragment의 LifeCycle은 Activity의 LifeCycle과 다르며, 특히 뷰의 생성과 소멸 과정에서 차이가 있습니다. Fragment View 생성 => onCreateView View 소멸 => onDestroyView Activity View 생성 => setContentView() View 소멸 => onDestroy() 호출 받을때 까지 유지 Activity에서 "binding = null"을 설정하지 않는 이유 액티비티의 View 생명주기는 액티비티 자체의 생명주기와 밀접하게 동기화 되는 것이 당연합니다. setContentView()를 ..

Android 2024.03.15

[Android] ViewBinding 총 정리

View Binding 뷰 바인딩 이전에 개발자들은 findViewById 메소드를 사용하여 XML에 정의된 뷰를 코드로 직접 찾아서 사용했습니다. 하지만 이 방법은 ① 타입 안전성이 보장되지 않고, ② View ID가 변경되거나 제거될 경우 런타임 시점에서 앱이 충돌할 위험이 있습니다. View Binding은 이러한 문제점을 해결하기위해 도입되었습니다. 바쁘신 분들은 제일 아래 3줄 요약을 보시길 바라겠습니다. findViewById와의 차이점 타입 안전성 컴파일 시간에 생성된 바인딩 클래스를 통해 뷰를 참조하기 때문에 타입 안전성 보장 null 안전성 null 체크를 수행하지 않아도 되므로 코드가 더욱 간결해진다. (findViewById의 경우 뷰가 존재하지 않을 경우 null을 반환하므로 반드시..

Android 2024.03.14

[Android] Android가 뷰를 그리는 방법

Android 프레임워크는 레이아웃의 루트 노드를 그리고 레이아웃 트리를 측정하고 그린다. 트리를 이동하고, 잘못된 영역을 교차하는 각 View를 렌더링하여 그린다. 각 ViewGroup은 draw() 메소드를 사용하여 각 하위 요소를 그리도록 요청하고 각 View는 자체 그리기를 담당한다. 뷰를 그리는 과정 3가지 과정은 다음과 같다. Measure : 뷰의 크기를 정함 / 측정계 Layout : 뷰의 위치를 정함 / 좌표계 Draw : 뷰를 캔버스 위에 실제 그리는 과정 뷰의 좌표계를 설정하는 단계는 Measure 단계이다. 또한 뷰의 좌표계를 사용하는 단계는 Layout 단계와 Draw 단계이다. 뷰의 좌표계를 사용하는 단계에서는 이미 뷰의 좌표계가 정의되어 있다. 안드로이드 뷰는 혼자서 존재할 수..

Android 2024.03.11

[Android] ViewPager2에 대해서 feat.RecyclerView

ViewPager2는 Android 에서 수평 또는 수직 방향으로 스와이프하여 화면을 전환할 수 있는 라이브러리이다. ViewPager2는 RecyclerView를 기반으로 구현되어 있다. ViewPager2의 구조와 구현 방식은 RecyclerView의 유연성과 효율성을 활용하여 안정적인 페이지 관리와 스와이핑 경험을 제공한다. RecyclerView2는 내부적으로 RecyclerView를 사용하여 페이지들을 관리하고 표시한다. => 뷰를 재사용하고 스크롤링 매커니즘을 활용할 수 있음을 의미함 ViewPager와 ViewPager2는 주로 Fragment를 관리하고 전환하는 데 사용된다. 이 컴포넌트들은 앱 내에서 여러 페이지 또는 탭 간의 스와이프 가능한 인터페이스를 구현하는 데 이상적이다. 각 페이..

Android 2024.03.10
728x90
LIST