본문 바로가기

전체 글

Permission 처리와 ListAdapter 활용법 오늘은 사진첩 만드는 과정을 진행할 겁니다.  틀은 다음과 같습니다.  이런 느낌의 사진첩을 만들건데 여기서 필요한 것은 다음과 같습니다.1) RecyclerView (GridLayout을 통한 레이아웃매니저 관리)를 활용한 뷰규성2) 이미지는 불러온 만큼 들어오고 나머지엔 사진 불러오기.. 문구가 들어가는것으로 보아item.xml은 두 개가 필요하며 하나는 이미지뷰 다른 하나는 TextView로 셋팅하면 될 것입니다.3) 사진첩 접근에 대한 권한 확인4) 사진을 가져올 때 Uri로 넣고 사진 불러오기 + 사진불러오기 선택시 해당 itemView에 리스너달기5) sealed class 안에 data class(모델 -> 이미지(uri)), object 형태(싱글톤 느낌으로 상속 중인 클래스에 쉽게 접근하.. 더보기
RoomDB 활용 방법과 Coroutine 사용 이번 포스팅에서는 단어장앱-1(RecyclerView)의 후속으로 직접 데이터베이스를 관리하는 로직(RoomDB)과데이터를 활용했을때 워커스레드에서 작업하는 방식으로 Coroutine을 통한 처리를 말씀드리겠습니다. RoomDB를 먼저 알아보기 위해서 다음 일련의 과정을 진행할 것입니다.1) build.gradle(app)에서 room.runtime, room.ktx와 같은 필요한 라이브러리를 추가합니다.2) Model로 data class를 만드는데 객체 형태로 주고받을 수 있도록 Parcelable로 선언해둡니다.3) Dao를 만들어 쿼리를 구현합니다.4) Database를 만들고 Entities를 셋팅합니다.  (Entity는 테이블과 같은 느낌으로 data class랑 연결해둡니다.)5) 데이터베.. 더보기
단어장앱-1 (RecyclerView) 이번 포스팅에서는 단어장 앱 개발에 대해 설명드리고자 합니다.2편으로 나눠서 설명할 것이며 이유는 담는 내용이 많기 때문에 나눠서 설명하겠습니다. * RecyclerView 1) xml에 RecyclerView를 선언한다.2) Collection으로 만드는 model 하나를 구현한다. (data class)3) item으로 쓸 xml을 만들고 내부 위젯들을 구성한다.4) Adapter를 생성한다.  [ㄱ. onCreateViewHolder ㄴ. onBindViewHolder ] 필수!! 5) onCreateViewHolder에서 4의 item.xml을 inflate한다.6) onBindViewHolder에서 list의 postion 값으로 하나의 객체를 뽑아온다.7) holder를 통해 요소에 접근할 수.. 더보기
타이머(AlertDialog/CustomView/Thread/Progress) 앱 오늘은 타이머 앱을 개발하면서 스킬셋 학습을 진행해 볼 것입니다. 1) 카운트다운- AlertDialog.Builder를 사용하며 커스텀뷰로 팝업에 심어서 시작할 때 스톱워치가 진행되도록 합니다. 2) FloatingButton의 변화- 시작 버튼을 누르면 일시정지 버튼으로 보이고 정지 버튼은 구간측정 버튼으로 바뀝니다.- 일시정지를 누르면 다시 정지버튼과 재생버튼이 활성화됩니다. 3) 워커스레드 구현- 시간이 흐르는 것은 Worker Thread에서 구현되고 UI 변경 부분은 UI Thread에서 구현되도록 합니다. 4) 구간측정- 구간 측정된 데이터는 뷰그룹에 addView 합니다.    다음 내용에 대해서 차근히 알아볼 것입니다.우선 AlertDialog.Builder를 통해 팝업을 만드는데, 팝업.. 더보기
+/- 만 구현된 간단한 계산기앱(Decimal Format, Flow, StringBuilder) 이번 포스팅에서는 간단한 계산기 앱을 개발하면서 다음 내용을 정리해 볼 것 입니다. 1) ConstraintLayout에서 사용하는 Flow의 역할2) 설정 테마에 따라서 글자 색상을 변경하는 방법3) DecimalFormat 활용법4) String vs StringBuilder vs StringBuffer 이 4가지 정보에 대해서 정리를 먼저 해보겠습니다.  Flow ConstraintLayout에서 위젯을 수평 또는 수직으로 체인 형태로 묶는 역할을 합니다. ConstraintHelper를 상속받아 나온 형태이기에 constraint_referenced_ids를 통해 나열할 위젯들을 정의합니다.정렬 방식에는 유의미한게 두 가지가 있는데 1) chain 모드 2) aligned 모드 입니다.  1) a.. 더보기
Layer / DatePickerDialog / Spinner / SharedPreference 오늘은 저번에 xml - style 구성 / Intent 관리 포스팅 다음 내용으로 정리해보았습니다.MainActivity에서 FloatingButton을 클릭하여 EditActivity로 이동한 다음 여기서 구현할 내용에 대해서 정리하였습니다. 전체 코드를 먼저 입력한 다음 하나씩 떼가면서 분석하겠습니다. [edit_activity.xml]  1) Layer겹쳐져 있는 두 위젯에 대해서 눌렀을때 동일한 작업을 수행하도록 구현한 것으로, 예를 들어 생일일자가 나와 있는 문구를클릭했을 때 캘린더가 뜨고 마찬가지로 문구 옆 캘린더 이미지를 눌렀을 때에도 캘린더가.. 더보기
Xml - style 구성 / Intent 관리 이번 포스팅에서는 Kotlin 기초를 마무리 한 상태에서 직접 앱을 개발해보며 하나씩 내용 확인을 하도록 하겠습니다.개발할 앱은 여러 단위 프로젝트를 통해서 만들어 볼 예정입니다.여러 단위 프로젝트로 포스팅이 모두 완료가 된다면 실제 서비스를 만들어가는 과정을 포스팅하며 정리해보도록 하겠습니다.   우선 이번 포스팅에서는 응급진료기록을 가져오는 부분을 할 건데 세 차례에 걸쳐서 핵심 개념들을 나눠 설명하도록 하겠습니다. 1. style 구성을 두어서 xml 내용을 공통적으로 처리한다.xml을 구성하다보면 공통된 style을 쓸 때가 있습니다.  이 부분을 동일하게 구성하도록 셋팅하는 방법입니다.  이렇게 리소스 파일을 만드는데 values 폴더안에서 style.xml을 만듭니다.style.xml에서는 공.. 더보기
카운트를 측정하는 앱 - 화면전환 이번 내용에서는 카운트를 측정하는 앱을 만들텐데, 간단한 앱이지만 중요한 개념인 생명주기에 대한 데이터 유지 방법에 대해 설명할 것입니다.설명을 보다 쉽게 하기 위해서 코드부터 보여주며 설명하겠습니다.  [activity_main.xml]  다음 xml 형태로 셋팅하게 되면 아래와 같이 UI가 구성됩니다.  초기화 버튼을 클릭하면 0으로 초기화되고 더하기 버튼을 클릭하면 하나씩 숫자가 커지는 앱입니다.정말 간단한 앱이지만 여기서 핵심은 생명주기에 따른 데이터 유지 형태입니다. [MainActivity.kt]class MainActivity : ComponentActivity() { private var number: Int = 0 companion object { .. 더보기

반응형