전체 글

· Android
[본 캠프(앱 개발 숙련) 강의내용 + 스탠다드 3, 4주차 강의 + 기타 사이트] 1. ViewHolder - 화면에 표시될 데이터나 아이템들을 저장한다. - (RecyclerView의 개념을 적용하려면) 스크롤 해서 안보이게 된 View를 재활용하기 위해 그 View를 기억하고 있어야 하는데, 이 역할을 ViewHolder가 한다. 기본 강의와 코드를 분석하여 아래와 같이 정리함. -> 스탠다드 (3, 4주차) 강의 들은 후 다시 작성함. 기본적인 메서드들 역할 callTime onCreateViewHolder( parent: ViewGroup, viewType: Int ): Holder binding 셋업, Holder 객체 생성 및 반환 ?? inner class ViewHolder( bindin..
· Android
[본 캠프(앱 개발 숙련) 강의내용 정리] 1. 뷰 바인딩의 장점 (=findViewById의 단점) - 뷰 바인딩은 View에 Direct References(직접 참조)를 생성하므로 유효하지 않은 View의 id로 인해 nullpointerException이 발생하지 않는다. 2. 어댑터 뷰 (Adapter View) - 정의 : 여러 개의 항목을 다양한 형식으로 나열하고 선택할 수 있는 기능을 제공하는 View - 특징 : 표시할 항목의 데이터를 직접 관리하지 않고, Adapter로 부터 제공 받는다. - 종류 : ListView, GridView / CustomView, RecyclerView -> 실무에서 많이 쓴다. 3. 어댑터 (Adapter) - 특징 : 데이터를 관리하며, 데이터 원본과 ..
· Android
1. UI 렌더링 - View의 생명주기 - onMeasure() : rootView와 childView의 size가 결정되면 호출된다. - onLayOut(): View와 childView의 size 및 포지션을 적용할 때 호출된다. - onDraw() : View가 화면에 컴포넌트(위젯)을 그릴 준비가 됐을 때 호출된다. * 래스터화(Rasterization) : 위젯들을 픽셀로 변환시키고, 스크린 상의 textures로 나타내는 변환 과정 2. Activity 생명주기 관련 코멘트 - onPause() : 배터리 수명에 영향이 있는 H/W Sensor Connection 또는 고사양 Resource 제거, 멀티 윈도우로 2개의 App을 쓸 때 다른 앱에 포커스된 경우에도 onPause()가 실행됨 ..
· Android
1. Strings.xml에서 다양한 특수문자(@)를 쓰고 싶을 때 - 다양한 이스케이프 시퀀스 활용 또는 CDATA 활용(문자를 그대로 입력해서 가독성은 좋음) 가 포함되어야 합니다. \u0040가 포함되어야 합니다. @가 포함되어야 합니다. 2. 회원가입 시 각 입력항목 별로 Error State를 관리하는 방법 - 기존의 나였다면 enum class를 활용했을 것 같은데, enum의 확장 버전인 sealed interface나 sealed class를 활용한다고 한다. - 데이터 클래스의 companion object-init() 대신에 name, email의 프로퍼티에 직접적으로 default value를 지정해도 되지 않을까 하는 의문이 있었다. -> Q. 재사용성이나 가독성을 위해 init 함..
· Android
(TimeTable은 문제시 삭제하겠습니다) - 02:00, 요즘은 ConstraintLayout을 사용하는 추세이다. - 05:05, colors.xml를 활용해보자 -> 유지보수가 편해진다. - 07:22, strings.xml에 선언한 값을 kotlin code에서 불러올 수 있다 -> getString(R.string.resId) Toast.makeText(this, getString(R.string.toast_msg_idpwErr), Toast.LENGTH_SHORT).show() //strings.xml 아이디/비밀번호를 확인해주세요 - 13:00, isFinishing 프로퍼티를 활용하여 Activity가 종료중인지 체크하고, 안전하게 finish() 할 수 있다. // ... // 액티비티..
· Android
오늘은 스탠다드 반의 1주차 과제였던 디자인을 적용한 과정을 리뷰해보려 한다. 디자인을 해본 기억이 없어서 추후 기억을 위해 post를 남긴다. 이 메인 View에서 다룰 부분은 Sign in과 Register 버튼의 디자인이다. 첫 번째로 컴포넌트는 디자인 적용을 위해 AppCompatButton을 사용했다. // 요구사항 1 반영 // app:layout_constraint 생략 // 요구사항 1 반영 // app:layout_constraint 생략 문제점 1. AppCompatButton을 사용해서 text를 출력하니 텍스트가 전부 대문자(SIGN IN, REGISTER)로 나왔었다. 원인 : AppCompatButton컴포넌트는 textAllCaps 속성의 디폴트 값이 true여서 대문자로 출력..
· Android
기존에 Button 터치에 대한 이벤트를 처리한다고 하자. 1. findViewById override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val startButton = findViewById(R.id.btn_start) startButton.setOnClickListener { val intent = Intent(this, TestActivity::class.java) startActivity(intent) } } 위의 코드는 매우 간단하지만 만약 Button이 100개 라면 findViewById를 100번 할 것인가? 그것은..
[내배캠 - 오늘의 문제] https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr map에서 값을 추가할 때, key값이 존재하는지 체크하고 없다면 init / 있으면 값을 추가하는 로직(if-else 또는 if)을 많이 짰었는데 좋은 메서드를 발견해서 리뷰와 getOrPut() 메서드의 간단한 분석을 해볼까 한다. val reportUser = mutableMapOf() // 키가 있는지 체크하고 없으면 init 셋업 해주고 그 뒤 add 하는 코드..
[내배캠 - 오늘의 문제] https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 base. 입력받은 Array의 값을 순회하며 stack에 쌓는다. 문제 접근 point1. stack의 peek()값이 1일 때, 상위 4개의 요소를 뽑아 "1321"과 같은지 비교한다. 같다면, answer++ 및 stack.pop() * 4번 수행 코드는 아래와 같다. (길어서 접어둠) 더보기 // Stack 버전 class Solution { fun ..
· Android
!role! : 중요한 내용 / 학습할 키워드 / 새롭게 알게된 사실 or 리마인드 / 이해 못 한 부분 모바일 앱 사용자 환경 일반적인 Android 앱에는 activities, fragments, services, content providers, broadcast receivers를 비롯하여 여러 앱 구성요소 (app components)가 포함된다. 개발자는 앱 매니페스트에서 이러한 앱 구성요소 대부분을 선언하며, Android OS는 이 파일을 사용하여 기기의 전반적인 사용자 경험에 앱을 통합하는 방법을 결정합니다. 일반적인 Android 앱은 여러 구성요소를 포함할 수 있고, 사용자는 짧은 시간 내에 여러 앱과 상호작용할 때도 많다는 점을 고려하면, 앱은 사용자 중심의 다양한 워크플로 및 작업..
탱구리몬
살아남기