본문 바로가기

Android

(20)
Fragment 생명주기 onCreate() - 프래그먼트가 액티비티 호출 받아 생성 - UI 초기화 불가능 onCreatedView() - 레이아웃 inflate 담당 - View 객체 반환 onViewCreated() - View 객체 파라미터로 전달 - LifeCycle 초기화 상태로 업데이트 - View 초기값 설정, LiveData 옵저빙, RecyclerView, ViewPager2에 사용될 Adpater 세팅 onViewStateRestored() - 저장해둔 모든 상태값이 Fragment의 View 계층 구조에 복원되었을 떄 호출 (체크 박스가 선택되었는지) - initalized -> created 변경 onStart() - 사용자에게 보여질 때 호출 - created -> stated 변경 onResume() ..
사용자 위치 얻기 1. 위치 접근 권한 - android.permission.ACCESS_COARSE_LOCATION : 와이파이나 모바일 데이터를 사용해 접근 - android.permission.ACCESS_FINE_LOCATION : 위성, 와이파이, 모바이 데이터를 이용해 정확한 위치에 접근 - android.permission.ACCESS_BACKGROUND_LOCATION : 백그라운드 상태에 위치 접근 (안드로이드 10이상, API 레벨 29) 2. 플랫폼 API의 위치 매니저 1) LocationManager : 사용자에 위치 얻을 때 사용하는 시스템 서비스 val manager = getSystemService(LOCATION_SERVICE) as LocationManager 2) 위치 제공자 지정 - G..
ROOM 1. 정의 - SQLite를 쉽게 사용할 수 있는 데이터 베이스 객체 매핑 라이브러리 - 쉽게 Query를 사용할 수 있는 API 제공 - Query 결과를 LiveData로 해 데이터베이스 변경될 때마다 쉽게 UI 변경 - SQLite 보다 룸 권장 2. 주요 3요소 1) @Database - 클래스를 데이터베이스로 지정하는 annotation, RoomDatabase를 상속받은 클래스 - Room.databaseBuilder 사용해 인스턴스 생성 2) @Entity - 클래스를 테이블 스키마로 지정하는 annotation 3) @Dao - 클래스를 DAO로 지정하는 annotation 기본적인 insert, delete, update SQL 자동 복잡한 SQL 직접 💡 annotation : 코드에 ..
Parcelize 정의 - 안드로이드 컴포넌트나 Fragment간에 클래스로 데이터를 주고 받을 때 사용 사용법 1. build.gradle(Module:app) plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' //추가 id 'kotlin-parcelize' id 'kotlin-android' } 2. data class 모델 변경 import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize data class TodoModel( val title: String?, val description: String? ) : Parcelable 3. Intent로 데이터 넘겨주..
어댑터뷰 Adapter View 1) 정의 여러 개의 항목을 다양한 형식으로 나열하고 선택할 수 있는 기능 제공하는 뷰 리스트 뷰 (List View) : 항목을 수직으로 나열 그리드 뷰 (Gird View) : 항목을 격자 형태로 나열 표시할 항목 데이터를 직접 관리 X, 어댑터라는 객체로부터 공급 받음 2) Adapter 데이터 관리, 데이터 원본과 어댑터 뷰 사이의 중계 역할 데이터 원본이 어댑터에 설정 + 어댑터 뷰에는 어댑터 설정 getCount() : 현재 어댑터가 관리하는 데이터 항목의 총 개수 getView() : 화면에 실제로 표시할 항목 뷰 getItem() : 특정 위치의 항목을 선택했을 때, 선택된 항목 getItemId() : 특정 위치의 항목을 선택했을 때. 항목 Id 3) Adapter..
Dialog 1. 정의 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메세지 표시하는 작은 창 2. 구조 AlertDialog 클래스 사용해 여러 가지 대화 상자 디자인 빌드 가능 1) 제목 콘텐츠 영역이 채워져 있는 경우만 사용 가능 선택사항 - 없어도 됨 2) 콘텐츠 영역 메세지, 목록, 또 다른 맞춤 레이아웃 3) 작업 버튼 대화 상자 하나에 작업 버튼이 세 개를 초과하면 안됨 3. 다이얼로그 예제 activity_main.xml 1) 기본 다이얼로그 (AlertDialog) // 1. 기본 다이얼로그 binding.btn1Alert.setOnClickListener { var builder = AlertDialog.Builder(this) builder.setTitle("기본 다이얼로그 타이틀") buil..
Fragment 1. 정의 액티비티 위에서 동작하는 모듈화된 사용자 인터페이스 여러 개의 프래그먼트를 하나의 액티비티에 조합해 사용 (프래그먼트 재사용 가능) 액티비티와 분리되어 독립적 동작 2. 액티비티 vs 프래그먼트 1) Activity : 인텐트를 통해 액티비티간 데이터 전달 2) Fragment : 메소드로 프래그먼트간 데이터 전달 Activity 적게 사용 가능, 복잡도 줄임 재사용 할 수 있는 레이아웃 분리해서 관리 가능 자원 이용량 적어 속도 빠름 3. 프래그먼트 파일 xml 파일 화면의 표시될 뷰 정의 Fragment class FirstFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGr..
뷰 바인딩 1. 정의 뷰와 상호작용하는 코드 쉽게 작성 뷰 바인딩 : 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스 생성 바인딩 클래스의 인스턴스 : 상응하는 레이아웃 안에 ID가 있는 모든 뷰 직접 참조 가능 2. 설정 1) gradle(Module:app) android{ ... // AndroidStudio 3.6 ~ 4.0 viewBinding{ enabled = true } // AndroidStudio 4.0 ~ buildFeatures{ viewBinding = true } } 2) Activity class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCrea..