coding study/Android 9

[Android] Activity와 ViewBinding

2022.04.02 Activity - 사용자 인터페이스 화면을 구성하는 컴포넌트 - 앱의 상태변화가 일어날 때마다 생명 주기의 특정 단계에 해당하는 특정 콜백 메서드를 호출 - xml로 작성된 UI를 그리는 창을 제공 onCreate() - 액티비티 만들 때 뷰 초기화, 리스너 설정 등 한번만 하는 작업을 이 곳에서 많이 해준다. onStart() - 화면이 사용자에게 보여질 때 호출 onResume() - 화면이 사용자와 상호작용하는 시점에 호출 onPause() - 팝업, 다이얼로그로 인해 화면의 일부가 가려졌을 때 호출 onStop() - 화면 전환등으로 액티비티가 더 이상 사용자에게 보여지지 않을 때 호출 onDestory() - 액티비티가 사용자나 시스템에 의해 완전히 종료될 때 호출 View..

[Android] CoordinatorLayout - CollapsingToolbarLayout

처음 화면 모습은 좌측에 나온 것 처럼 상단에 curation 리사이클러뷰가 보이고, 아래에는 카테고리 툴바, 그에 해당하는 리사이클러뷰가 있다. 그리고 사진을 스크롤 하면 어느 순간 카테고리 툴바가 상단에 "착" 붙는 식으로 가고 아래 리사이클러뷰만 리사이클러되는 형식임!! 큐레이션파트 부분을 collapsingToolbarLayout으로 해야할 것 같다! 근데 우려되는 부분은 그 툴바 레이아웃에 리사이클러뷰가 존재해도 되는지? 그 부분인데,, 이론 공부도 필요하다. viewGroup!!!!

[Android] 스레드 VS 코루틴

스레드 스레드는 프로세서가 어떻게 한 번에 여러 작업을 처리하는 것처럼 보이는지에 관한 추상화이다. 여러 스레드의 명령어 집합 간에 전환할 때 스레드가 실행되는 정확한 시간과 스레드가 일시중지되는 시점은 우리가 직접 제어할 수 없다. 그리고 스레드를 직접 사용할 때 항상 예측 가능한 출력을 기대할 수도 없다. 예를 들어 다음 코드는 간단한 루프를 사용하여 1에서 50까지 세지만 이 경우에는 숫자가 증가할 때마다 새 스레드가 만들어지는데 예상되는 출력내용이라면 1부터 50까지 순서대로 출력될 것이라고 생각이 들 것이다. 다만, 아래 코드를 출력해보면 fun main() { var count = 0 for (i in 1..50) { Thread { count += 1 println("Thread: $i co..

[Kotlin] Fragment : 프래그먼트

프래그먼트란..? 📌 프래그먼트는 앱 UI의 재사용 가능한 부분을 나타낸다. 자체 레이아웃을 정의 및 관리하고 자체 수명 주기를 보유하고 있다. 또한 자체 입력 이벤트를 처리할 수 있다. 프래그먼트는 독립적으로 존재할 수 없고 활동이나 다른 프래그먼트에서 호스팅이 되어야 한다. 프래그먼트의 뷰 계층 구조는 호스트 뷰 계층 구조의 일부가 되거나 연결되는 것이다. 공식문서에 따르면 이와 같은 설명이다.. 뭔가 알것같기도 하지만??,,, 머릿속으로는 구조화가 되지 않아서 이해가 잘 안갈 수 있다! 예시를 들어보자!! 프래그먼트는 활동의 UI에 모듈성과 재사용성을 활용하고 단일 화면이나 화면 일부의 UI를 정의하고 관리하는 것에 적합하다. 각 다른 화면마다 반응하는 앱을 아래 이미지를 참고하여 생각해 보자!! ..

[Kotlin] 람다 및 고차 함수

람다표현식이란.. peopleAges.forEach { print("$it.key} is ${it.value}")} 이와 같은 코드는 함수 forEach가 호출되는 변수 peopleAges이다. 함수 이름 다음에 매개변수가 포함된 괄호를 사용하는 대신에 함수 이름 다음에 코드를 포함하는 중괄호{ }를 사용한 코드이다. 중괄호 안에 작은 함수를 작성하는 것 같지만 함수 이름이 없다!!! 이름이 없으면서 곧바로 표현식으로 사용할 수 있는 함수를 "람다 표현식" , 또는 "람다"라고 말한다. 람다 표현식 구문의 경우 매개변수가 먼저 나오고 함수 화살표가 나온 뒤는 함수 본문이 나온다. 즉 , 람다의 마지막 부분은 반환 값을 의미한다. { a: Int -> a*3 } 이 코드에서는 "a: Int" 가 매개변수를..

[Kotlin] 추상 클래스 , 인터페이스

[앞으로 만들 클래스] Dwelling: 모든 주택에 공통으로 적용되는 정보를 담고 있는 구체적이지 않은 집을 나타내는 기본 클래스 SquareCabin: 바닥 면적이 정사각형인 나무로 만든 정사각형 통나무집 RoundHut: 바닥 면적이 원형인 짚으로 만든 둥근 오두막이고 RoundTower의 상위 요소 RoundTower: 바닥 면적이 원형이고 층이 여러 개인 돌로 만든 둥근 타워 [추상 클래스] '추상' 클래스는 완전히 구현되지 않아서 인스턴스화할 수 없는 클래스이다. 큰 틀을 짜둔다! 라는 의미를 갖고있다고 생각하면 편하다. 추상클래스를 사용하여 클래스를 생성하고 실제 객체 인스턴스를 빌드한다. abstract class Dwelling(){ } 이처럼 Dwelling( ) 추상 클래스를 만든 후..

[Kotlin] 데이터바인딩 : DataBinding

데이터바인딩이란? 간단하게 xml파일에 data를 연결(binding)해서 사용하는 것이다. Activity에서 따로 View들을 정의해서 사용하지 않아도 되고 Data를 view에 연결시켜 두면 data가 변할 때 따로 세팅해주지 않아도 변경되게 할 수 있다. 데이터와 뷰를 연결하는 작업을 레이아웃에서 처리하는 기술을 데이터 바인딩이라고 한다. (1). findViewById()를 사용하지 않아도 된다. 자동으로 xml에서 만든 View들을 만들어준다. (2). RecyclerView 사용 시 각각의 item들을 세팅하지 않아도 알아서 xml에서 처리할 수 있다. (3). Observable를 이용해 실시간으로 데이터를 바꿔줄 수 있다. 데이터 바인딩 기본 세팅 - gradle 세팅 build.grad..

[Kotlin] ViewPager2, Tablayout

******아직은 기록용************ - ViewPager2 선언 (build.gradle(app)) implementation "androidx.viewpager2:viewpager2:1.1.0-beta01"1). Activity내에서 Fragment를 전환하기 위해 ViewPager2를 배치한다. 이때 ViewPager2는 activity_main.xml 에서 배치를 함.(fragment.xml아님) 2). Adpater class 만들어주기 간단하게 데이터 넣는 공간이라고 생각하자 FragmentStateAdapter를 상속하는 ViewPager2 어댑터를 만들기. 이때 override는 ( getItemCount, createrFragment ) : getItemCount란 Adapter..

[Git] 깃 크라켄 commit /기록용

2021.10.16 소스트리에서 "깃 크라켄" 으로 개발 협업 tool 옮긴 날. 소스트리가 팀플하면서도 프로그램 자체가 무거워서 잘 안돌아갔는데 점점 협업을 하는 날이 많아 질테니,,, 더 편리하고 GUI로 쉽게 협업하는 깃 크라켄으로 tool을 바꿨다. (추천해준 친구쓰 thank you sooo much) 지금 현 사진은 Android-Subin내의 안드로이드 스튜디오 폴더 경로 세미나 과제 제출 장소 처음 깃 크라켄 설치 후 clone 방법 "Where to clone to" --> 내 로컬 저장소 빈 폴더 경로 URL --> 내가 git 레퍼지토리에 올릴 주소 ( 깃에서 클론해온 주소) 만약 작업하고 있던 프로젝트가 있는 경우 깃 크라켄 저장 폴더(Where to clone to~)에 Andro..