Intent : 메시징 객체로, 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있다.
지연 초기화(lazyinitialization) : 필드의 초기화 시점을 그 값이 처음 필요할 때까지 늦추는 기법
Git이란? : 코드 변경점 기록, 버전 관리 도구(형상 관리 도구) 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것
MBTI 테스트 앱 1. android:scaleType 2. 뷰페이저 사용 3. 라디오 버튼
약수 구하는 알고리즘 정수 N이 입력됐을 때 N의 소수를 구하는 알고리즘을 짜보자.
2019년 구글에서 코틀린을 공식적인 안드로이드 앱 개발 언어로 채택
조건식 when continue break for
람다 표현식은 이름이 없고 타입추론을 이용한 리턴 타입을 가지는 함수이다. 람다는 필수적인 부분인 파라미터 리스트와 바디만을 가지고 있다. filter( ), map( ), reduce( )
확장함수 map
[OOP] 객체지향 5원칙(SOLID) : 단일책임원칙
메소드 : 특정한 로직을 가지는 소스코드로직을 추상화해놓고 상황에 맞게 실행할 수 있다코드의 재사용성을 높일 수 있다반환자료형이 없을 때는 Unit으로 명시하거나 생략할 수 있다프로그램의 시작은 항상 main 함수이다OOP(Object Oriented Programmi
객체를 이용해 변수, 메소드의 호출 여부를 접근함default는 public프로젝트-모듈,패키지,클래스모듈-패키지,클래스패키지-클래스private : 동일한 클래스 내부에서만 접근할 수 있다프로그램 실행 전에 알 수 있는 컴파일 에러 : 오류프로그램 실행 도중 발생하는
Collections에서 쓸 수 있는 Filter 함수 에서의 필터 사용 filter : 특정 조건에 부합할 때 filterNot : 특정 조건이 아닌 경우에만 남기고 싶을 때 startsWith("문자") : 특정 문자로 시작하는지 확인 endsWith("문
slice, take, takeLast
숫자 자료형끼리는 to자료형() 메소드를 활용할 수 있다.하지만 문자열을 숫자로 변경할 때는 별도의 메소드가 필요하다."숫자 형태의 문자열"을 숫자로 바꾸려면 Integer.parseInt(문자열)"실수 형태의 문자열"을 실수로 바꾸려면문자열.toDouble()상속관계
안드로이드 : 모바일 운영 체제이자 모바일 플랫폼안드로이드를 쓰는 이유 : 무료, 포팅이 쉽다, UI 개발이 쉽다OS : 윈도우운영 프로그램 : 엑셀엑셀을 사용하는 사람은 윈도우를 몰라도 되지만 엑셀을 개발하는 사람은 윈도우를 알아야 한다→모바일을 개발하는 사람은 모바
안드로이드 앱개발 입문 3,4주차 강의 정리UI : User Interface 안드로이드 앱의 UI를 구성하는 기본 단위뷰의 구성WidgetLayout대표적인 위젯은 TextView, EditText, Button등이 있음View뷰 클래스는 모든 Ui 컴포넌트들의 부모
mapIndexed 요소와 그 요소의 인덱스를 동시에 사용해야 할 때 유용 ✊ 공백으로 합해진 문자열을 공백 기준으로 나눈 후 각 문자를 쪼개기
ConstraintLayout
내배캠 한 달 회고
\-스탠다드 1주차 강의<1주차 수업>안드로이드 어플리케이션의 핵심요소onCreate 태어나서 / 레이아웃 설정, 연결, 기본값 설정(테마)onStart 시작되고 / 준비가 됐지만 보이지는 않음onResume / 상호 작용할 준비가 완료Activity Runnin
: startActivityForResult 메소드를 사용해 다른 액티비티를 시작하고 onActivityResult 콜백을 오버라이드하여 결과를 처리함: registerForActivityResult 메소드와 함께 ActivityResultContract를 사용해 결과
-챌린지반 1주차 강의 >### 😮기억해야 할 점 | 코드의 재사용성을 높이자 같은 형태의 패턴을 하나로 합치고 싶을 때나 여러 군데에서 사용하는 코드면 함수로 빼자 addTextChangedListener TextWatcher 인터페이스의 간소화된 버전 간소
Stateful 컴포저블 : 상태를 소유하지 않는 컴포저블즉, 새 상태를 보유하거나 정의하거나 수정하지 않음Stateful 컴포저블 : 시간이 지남에 따라 변할 수 있는 상태를 소유하는 컴포저블
KPT 회고 keep, problem, try의 약자 Keep : 잘하고 있는 점, 계속 이어갔으면 하는 부분 Problem : 개선이 필요하다고 생각되는 부분 Try : Problem에 대한 해결책, 다음 회고 때 판별 가능한 것, 당장 실행 가능한 것 Keep -
ViewBinding 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 ViewBinding은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 클래스의 인스턴스에는 상응하는 레이아웃에 ID가 있는 모든 뷰
📌ListView, GridView보다 RecyclerView를 확실히 많이 사용하긴 하지만 설정창에서처럼 간단한 리스트를 표시할 때는 ListView, GridView를 쓸 때도 있다. AdapterView 여러 개의 항목을 다양한 형식으로 나열하고 선택할 수 있
🔅ListView와 RecyclerView ListView : 사용자가 스크롤할 때마다 위에 있던 아이템은 삭제되고 맨 아래의 아이템은 생성 되길 반복된다. 만약 생성할 아이템이 100개면 처음부터 100개가 만들어진다. 계속 삭제와 생성을 반복하므로 성능에 좋지 않
Fragment 프래그먼트 : 한 개의 액티비티 안에서 특정 영역만 교체 Activity와 Fragment의 차이 1) Activity 액티비티 매니저에서 인텐트를 해석해 액티비티간 데이터를 전달 2) Fragment 하나의 액티비티 안의 프래그먼트 매니저에서 메소드
Dialog 1. 기본 다이얼로그(AlertDialog) 2. 커스텀 다이얼로그(CustomDialog) dialog.xml 3. 날짜 다이얼로그(DatePickerDialog) <img src="https://velog.velcdn.com/images/kimn
fragment lifecycle하고 fragment callbacks의 차이점밑의 그림이 최신 것라이프사이클에서는 onCreate, onCreateView, onViewCreated까지 기억하자onViewCreated : 그냥 이런 게 있다고 알고만 넘어가자왼쪽의 F
여러가지 방법이 있다.여기서는 라이브러리를 안 쓰는 방법을 사용함CardView로 감싸고 내부 옵션이 cardCornerRadius로 깎으면 됨\-편하게 라운드 처리할 수 있는 방법<androidx.cardview.widget.CardView
1. Gradle에 ViewPager2 의존성 추가 2. 레이아웃에 ViewPager2 추가 3. 프래그먼트 상태 어댑터인 ViewPagerAdapter 생성 4. MainActivity에서 ViewPager2와 어댑터 연결
커스텀 다이얼로그의 배경이 보일 때 항상 커스텀 다이얼로그 쓸 때마다 배경색이 흰색으로 보였다. 처음 시작할 때는 아래의 코드를 넣어주고 시작하자 다이얼로그의 양옆이 너무 길 때 ConstraintLayout으로 하면 길이를 아무리 줄여도 줄여지지 않는데 Lin
글자 밑에 밑줄 넣기string.xml에 아래의 코드를 추가한다.매너온도xml에 아래와 같이 사용한다.android:text="@string/underlined_text"이미지 테두리 둥글게 하기res/drawable 폴더에 rounded_corners.xml 추가xm
BottomNavigationView와 ViewPaging을 동시에 구현할 때 생겼던 문제동작 화면fragment 태그는 name 태그로 어떤 프래그먼트가 보일지 정해놓는 정적 동작하기 때문에 뷰페이징으로 화면을 넘겼을 때 안 넘어가고 뒤에 화면이 남아있을 수 있다.
매일 역할 분담 → 매일 한 일&해야 할 일을 정리할 수 있어서 좋았다매일 3번 (오전, 오후, 저녁) 회의 진행 → 루즈해지지 않아서 좋았다PR 생성 후 merge할 때마다 서로 알려주기 → 바로 pull 해와서 작업할 수 있어 좋았다막히는 부분이 있었을 때 혼자 해
프로그램의 설정 정보를 영구적으로 저장하기 위해 사용XML 포맷의 텍스트 파일에 키-값 세트로 정보 저장ex) alarm-truealarm 값이 필요할 때 true인지 false인지 받아오면 된다.다른 앱에서는 안되고 내가 만든 앱에서만 읽을 수 있다. 여러 개의 데이
📖 영구적 데이터 저장 방법 3가지 1. SharedPreferences 2. DB 3. 파일 형태 📖 Room 안드로이드에서 SQLite DB를 쓴다. SQL 종류 중 하나인 SQLite. PC용 프로그램이 아니라 좀
안드로이드 및 자바를 위한 타입-세이프한 HTTP 클라이언트 라이브러리사실 REST API를 써서 쌩으로 테이터 통신을 하려면 복잡하고 어려움Response 객체를 통해 HTTP 응답의 여러 정보에 접근할 수 있다.네트워크 오류나 데이터 변환 오류가 생기면 onFail
Room : DB를 편하게 쓰기 위한 것 Retrofit : HTTP 통신을 편하게 하기 위한 것 1. 권한 설정/라이브러리 추가 인터넷 권한 추가 애플리케이션이 평문(HTTP) 네트워크 트래픽을 사용할 수 있도록 설정 AndroidManifest.xml build
메뉴판을 만들어야 해! ➡ 음료는 글자만 있어도 될 듯. 메인 메뉴들은 사진과 설명도 있어야 겠는데?
1. 라이브러리 추가 2. 사용하기 불러올 이미지(load)와 그릴 곳(into) 추가
Model : 애플리케이션의 정보, 데이터.데이터 통신, 로컬 DB 처리, UserManager뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.즉, 데이터 변경이 일어났을 때 모델에서 화면 UI를 직접 조정해서 수정할 수 있도록 뷰를 참조하는 내부 속성값을 가지면
📖 MVVM MVVM패턴의 기본 : ViewModel에서 데이터를 가공하고 LiveData를 통해 View에게 알려줌 > ## 📌근본적인 컨셉 View와 비즈니스 로직을 분리시키기 위함 Model : 데이터 관리 View : 화면에 데이터를 표시 ViewModel
1. kakao developers 가입하기 카카오 api 사용이 처음이라면 kakao developers에 카카오 계정으로 가입해야한다 2. API 키 사용 REST API 키 앞에 KakaoAK를 붙이고 공백 하나로 띄운다. ex) KakaoAK "API키"
최상단으로 이동하는 기능 누르자마자 최상단 이동 부드럽게 최상단으로 이동
📌근본적인 컨셉 View와 비즈니스 로직을 분리시키기 위함 📖 아키텍처 가이드 크게 2가지 (Domain Layer는 옵션) 1.UI Layer 사용자에게 보이는 버튼, 텍스트 화면에 애플리케이션 데이터를 표시하고 사용자와 상호작용 ex)버튼 클릭, 네트워크
KEEP: 이번 프로젝트에서 진행한 과정 중 다음 프로젝트에서도 유지했으면 하는 부분Git Commit Convention 유지 하루 단위로 역할을 정리하고 진행 된 부분을 체크 리스트로 관리한 부분프로젝트 시작시 기능별 역할을 정하고 시작한 부분 구체적으로 구현할 부
📖 Modal UI 모달(modal) UI는 무엇일까? 모달은 사용자의 이목을 끌기 위해 사용하는 화면 전환 기법을 의미한다. 팝업, 바텀시트, 스낵바 등 여러 가지가 존재한다. PC에 비해 활용가능한 면적이 적기 때문에 사용자의 이목을 끌고 행동이 필요한 경우 모달 UI의 의미와 선택 방법 1) 팝업 각 기업마다 팝업을 명칭하는 말은 다르다. 라인 ...
컨벤션 정하기 깃 플로우 전략 정하기 마진, 글자크기 정해놓기 스크럼할 때 마다 각자 구현한 기능 공유하기 5분 일지 쓰기 네트워크 에러 예외 추가 바텀시트 다이얼로그 구현해보기 모션 레이아웃 사용해보기
🤔 repository를 fork했을 때 잔디가 심기지 않는 문제 팀과제의 레포지토리를 개인 레포지토리로 fork를 하고 수정했을 때 잔디가 심기지 않았다. 아래는 잔디를 심기 위해서 충족되어야 하는 요건들이다. >- GitHub 계정과 commit 이메일 계정이
먼저 브랜치의 종류에 대해 알아보자 깃허브의 dev 브랜치와 로컬의 dev, origin/dev는 각각 다른 브랜치라고 볼 수 있다. > 원격(remote) dev 브랜치 로컬의 dev origin/dev(로컬) origin/dev 브랜치와 실제 원격 저장소의 d
MainActivity위에 SearchFragment/FavoritesFragment 올리기 1. nav_graph 추가 navigation/nav_graph 2. nav_menu 추가 menu/nav_menu 3. activity_main.xml 추가 Navig
Android Navigation Component는 주로 단일 액티비티 내에서 프래그먼트 간의 이동을 관리하도록 설계 만약 2개의 액티비티를 사용한다고 하면 navigation 폴더 밑에 2개의 graph 파일을 만들어줘야 한다. 나는 RandomActivity
1. 파이어베이스에 앱 등록 다운받은 google-services.json 파일을 프로젝트 루트 디렉터리에 추가 2. 종속성 추가(프로젝트 수준) build.gradle.kts(프로젝트 수준) 파일에 플러그인을 종속 항목으로 추가합니다. 3. 종속성 추가(앱 수준) build.gradle.kts(앱 수준) 파일에서 googl
markers : 마커들의 리스트\_furthestPair : 마커 쌍 1개findFurthestMarkers : 지도에서 가장 멀리 있는 마커 구하는 함수connectMarkersSequentiallyFromFurthest : 마커끼리 폴리라인 연결하는 함수findF
AndroidManifest.xml 종속성 추가 코드 맵뷰가 안드로이드의 생명주기 이벤트에 맞춰 적절하게 동작할 수 있도록 하기 위해 맵뷰(MapView)의 생명주기 메서드를 프래그먼트나 액티비티의 생명주기 메서드 내에서 호출하는 것이 중요하다. 따라서 맵뷰의 o
나는 MainActivity에서 BottomAppbar + FloatingActionButton을 사용했다. BottomNavigation 에는 총 4개의 탭이 있다. 홈 화면에서는 4개의 탭이 다 보이고 2번째 탭에서는 BottomNavigation 가운데에 뜨는 F
Adapter의 매개변수로 클릭 이벤트를 처리하기 위한 onItemClick를 람다 함수로 받음onItemClick : 클릭 이벤트가 발생했을 때 호출될 콜백 함수뷰의 클릭 이벤트 처리클릭 이벤트가 발생했을 때 호출될 콜백 함수
앱 내에서 사용자가 다양한 화면(액티비티나 프래그먼트) 사이를 이동할 수 있게 도와주는 중요한 구성 요소주로 단일 액티비티 내에서 여러 프래그먼트 간의 이동을 용이하게 하는 데 사용이를 통해 애플리케이션의 내비게이션 로직을 단순화하고 중앙 집중화할 수 있다.앱의 Mai
BottomSheetDialogFragment는 Material Design 컴포넌트 라이브러리의 일부로, 바닥에서 올라오는 모달 시트를 구현할 때 사용 BottomSheetDialogFragment의 스타일을 설정하기 위해 setStyle 메서드를 호출 setSt
널(null)은 객체가 주소를 가지지 못한 상태인데 널인 상태의 객체를 이용할 때 널 포인트 예외(NullPointException)이 발생한다.null 값으로 인한 오류를 방지하고 안전하게 코드를 작성할 수 있도록 도와주는 게 널 안정성이다NPE : 널인 상태의 객체
단일 책임 원칙 (Single Responsibility principle)개방 폐쇄 원칙 (Open Closed Principle)리스코프 치환 원칙 (Liscov Substitution Principle)인터페이스 분리 원칙 (Interface Sergregatio
📖 Collection 여러 개의 데이터를 하나의 그룹으로 다루기 위한 도구 모음 Collection 주요 인터페이스 List : 순서가 있으며 데이터 중복 허용 O Set : 순서가 없으며 데이터 중복 허용 X Map : Map & Value 구조, Key는 중복
Kotlin에서는 다양한 컬렉션 타입들이 각기 다르게 내부적으로 처리되어 출력된다.MutableListAbstractList를 상속받는데 toString() 메소드가 오버라이드 되어 있어 컬렉션의 내용을 element1, element2, ... 형태로 잘 출력한다.따
📖 Activity의 LifeCycle 📖 Activity의 구성이 변경될 때 데이터를 유지하는 방법 onSaveInstanceState 이 메소드는 구성 변경이 일어나기 직전에 호출되어 Bundle 객체에 상태 정보를 저장한다. 그리고 Activity가 다시
📖 Image Loader Library
데이터 전달 하나의 액티비티에서 다른 액티비티로 데이터를 전달시킬 때 Bundle에 객체를 담아 전달해야 한다. 만약 전달해야 할 데이터가 복잡한 클래스일 경우 Serializable 또는 Parcelable로 직렬화한 뒤 인텐트에 추가해야 한다. 📖 직렬화란? 직
Navigation 공식 문서 1. 의존성 추가 2. navigation controller 3. navigation graph Navigation 구성 주요 구성 요소 설명 1. NavHost 2. Composable 3. NavHostController 4.