Android 24

(Android Studio) - View Binding

[ View Binding ] - 뷰 바인딩 기능이란 뷰와 상호작용 하는 코드를 쉽게 작성할 수 있도록 하는 것 - 모듈에서 사용 설정된 뷰 바인딩은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성함 - 바인딩 클래스의 인스턴스에는 상응하는 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함됨 - 대부분의 경우 뷰 바인딩이 findViewById 를 대체함 쉽게 설명해서 뷰 바인딩을 사용하면 레이아웃 ID가 있는 뷰마다 변수를 선언하여 findViewById 와 연결할 필요가 없다는 뜻이다. 뷰 바인딩을 사용하면 코드 작성이 더 편해질 수 있다. [ findViewById 와의 차이점 ] 1) Null 안정성 (Null Safety) -> 뷰 바인딩 기능을 사용하면 앱이 레이아웃의 각 뷰를 직..

Android 2024.04.11

(Android Studio) - 다국어 지원 설정, strings.xml

일주일 동안 진행하는 프로젝트에서 다국어 지원 설정을 맡았기 때문에 내용을 정리해 봅니다. TextView, EditText, Button ... 등 많은 UI 요소들은 text 로 정보를 전달하는 역할을 종종한다. 그런데 이 요소들이 갖고 있는 text 속성에 하드코딩(ex: text = "돗개진")을 하게 되면 다국어 지원을 할 수 없게 된다. 따라서 res -> values -> strings -> strings.xml 파일에 내가 사용할 문자열들을 모아서 관리하여 다국어 지원까지도 가능하게 할 수 있다. week3_sns_project 게시물 제목 게시물 내용 BTS BTOB IDLE 스타 게시판 15시간 전 방탄 카페 용산점에 왔어요 비투비 콘서트 갔다왔어요!! 게시글 내용1 게시글 내용2 홈 ..

Android 2024.04.03

(Android Studio) - Fragment 데이터 전달 방식

[ Fragment 간 데이터 전달 방법 ] 1. bundle과 FragmentManager 로 전달 2. Fragment Result API를 사용하여 Data 전달 3. Fragment 간 공통의 ViewModel (ex. HostActivity 의 ViewModel) 로 전달 4. Jetapack 의 Navigation 에서 제공하는 safe-args 로 전달 1. bundle과 FragmentManager 로 전달 (Bundle 로 Data 를 담아 전달) //PassBundleFragment는 본인이 전달하고자 하는 Fragment class val bundle = Bundle() bundle.putString("key", "value") val passBundleBFragment = PassB..

Android 2024.04.01

(Android Studio) - Fragment LifeCycle

[ 액티비티의 생명주기와 차이점 ] - 생성 시 onViewCreated() - onViewStateRestored() 가 추가로 있음 - 소멸 시 onSaveInstanceState() - onDestroyView() 가 추가로 있음 [ 액티비티의 생명주기와 공통점 ] - LifeCycle 이 위에서 아래 방향으로 진행되며 Fragment 가 백스택 최상단으로 올라올 경우 생명 주기가 CREATED - STARTED - RESUMED 순으로 진행되고 반대로 백스택에서 pop 됐을 경우 RESUMED - STARTED - CREATED - DESTROYED 순으로 진행됨 - onCreate() : Fragment 만 CREATED 된 상황이며 onCreate() 이전에 onAttach() 가 먼저 호출됨..

Android 2024.04.01

(Android) - Activity Stack

[ Process & Task ] ㄴ> 사용자가 현재 화면으로 보고 있는 액티비티가 가장 위쪽에 위치하며 백(Back)버튼을 누르게 되면 보고 있던 액티비티는 스택에서 제거되고 그 아래에 있는 액티비티가 화면에 나타남 Task : 애플리케이션에서 실행되는 액티비티를 기록하는 스택이며 안드로이드에서 Task를 이용해 화면의 순서와 흐름을 관리할 수 있음 : 스택의 가장 아래에는 기본 액티비티(base activity)가 있으며 주로 홈화면이 이 위치에 놓임 : 어플리케이션의 실행되는 액티비티만을 포함함 Process : 어플리케이션의 독립적인 실행 단위(흐름)을 말함, 태스크는 안드로이드에서 프로세스와 무관하게 실행되는 액티비티 정보를 저장하는 반면 프로세스는 해당 어플리케이션에 존재하는 모든 실행 코드와..

Android 2024.03.27

(Android Studio) - Activity 생명 주기

[ 액티비티의 수명 ] - onCreate() 호출과 onDestroy() 호출 사이에 존재함 *onCreate() = 액티비티가 생성되어 레이아웃 설정 등을 수행 *onDestroy() = 호출되는 시점에 사용하고 있는 리소스를 모두 해제하고 생을 마감 [ 액티비티의 화면이 눈에 보이게 되는 Visibility ] - onStart() 와 onStop() 호출 사이에 존재 - 사용자가 액티비티 화면을 보며 상호 작용을 할 수 있음 - onStop()이 호출되어 새 액티비티가 시작되면 해당 액티비티는 화면에 더 이상 표시되지 않음 - 시스템은 액티비티 전체 수명 내내 onStart() 및 onStop()을 여러 번 호출 가능 -> 이 때 액티비티는 사용자에게 표시되었다 숨겨지는 상태를 오가게 됨 [ 액티..

Android 2024.03.25

(Android Studio) Activity, Intent

[ 안드로이드 4대 컴포넌트 ] : 4대 컴포넌트를 이해하고 안드로이드 애플리케이션 기본 구조 파악이 매우 중요 1. 액티비티 (Activity) - 사용자가 직접 상호작용하는 화면 -> 사용자 인터페이스(UI)를 담당하며, 사용자의 입력에 반응하는 이벤트 기반 프로그래밍 가능 2. 서비스 (Service) - 백그라운드에서 오랜 시간 동안 실행되어야 하는 작업 수행 (ex: 음악 재생, 파일 다운로드 등) -> 사용자가 직접적으로 인지하지 못하는 애플리케이션의 백스테이지에서 일어나는 작업들을 담당 3 브로드캐스트 리시버 (Broadcast Receiver) - 안드로이드 시스템으로부터 발송되는 다양한 이벤트나 정보를 앱이 받을 수 있게 해 주는 컴포넌트 (ex: 배터리 부족 경고, 화면 꺼짐 등) ->..

Android 2024.03.22

(Android Studio) - margin, padding, gravity 등

- Margin : 다른 뷰와의 간격 (바깥쪽으로 먹는 여백) : layout_margin : 상하좌우로 동일한 마진 설정시에 사용되는 속성 : layout_marginLeft, layout_marginRight, layout_marginTop, layout_marginBottom - Padding : 뷰의 안쪽으로 먹는 여백 (textview 위젯의 크기를 기준으로 안쪽) : paddingLeft, paddingRight, paddingTop, paddingBottom + Margin 과 Padding 이 모두 적용된 모습 - Gravity : 뷰 안의 내용을 정렬할 때 사용 : 위젯 안의 텍스트 위치 잡기 BOTTOM : ­부모 뷰에서 아래 쪽에 위치시킴 CENTER ­: 부모 뷰의 중앙에 위치시킴 ..

Android 2024.03.20

(Android Studio) - 레이아웃 종류와 쓰임새

1. Linear Layout : 컨테이너에 포함 된 뷰들을 수평 또는 수직으로 일렬 배치하는 레이아웃 : vertical (수직) / horizental (수평) : 오직 가로 또는 세로 한 방향으로만 가능 : 중첩 X : weight(가중치)를 줘서 비율에 맞게 조정 가능 2. Relative Layout : 뷰를 서로 간의 위치 관계나 컨테이너와의 위치 관계를 지정하여 배치 : 자식 View 위젯들이 서로 간의 상대적 배치 관계에 따라 화면에 표시 될 위치가 결정되도록 만들어줌 : A는 무조건 B 옆에 / C는 무조건 D 밑에 : parent를 기준으로도 할 수 있음 : 중첩 O 3. Table Layout : 계산기 같은 거 만들 때 쓰는 거고 자주 안 씀 4. Frame Layout : 컨테이너..

Android 2024.03.19

(Android Studio) 프로젝트 구조

안드로이드 스튜디오에서 새로운 프로젝트를 생성했을 때 그 구조에 대해서 알아보자 1. 매니페스트 파일 : 앱의 기본 특징 설명, 앱의 구성요소 (액티비티, 서비스 등)를 정의한 XML 파일 2. 리소스 폴더 - drawable: 이미지 리소스를 담는 파일 - layout: UI 구성에 필요한 XML 리소스 - mipmap: 앱 아이콘 이미지 - values: 문자열 등의 값으로 이용되는 리소스 (string.xml을 사용해야 하는 이유는 다국어 지원을 위해 필요하므로 xml 코드에 text 값을 하드코딩하는 것은 지양된다) ! 주의할 점 ! : res 하위의 폴더 이름은 지정된 이름을 사용해야 함 : 각 리소스 폴더에 다시 하위 폴더를 생성할 수 없음 : 리소스 파일 명에는 알파벳 대문자를 사용할 수 없..

Android 2024.03.18