본문 바로가기

Android

타이머(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 { .. 더보기
Kotiln 기초 3편 마지막 Kotlin 기초 3편에서는 1) 초기화 지연  2) data class  3) sealed class  4) object  5) companion object이 5개의 내용에 대해서 다룰 것입니다. 1. 초기화 지연- 선언, 지정은 나중에- null-Safe- 메모리 효율을 높임 lateInit varval by lazy변수 타입을 지정할 것선언과 동시에 초기화가 진행초기화 타입에는 사용하지 않는다.(대체: Delegate 쓸 것)[예시]1) private lateInit var age: Integer (Int X)2) private var age by Delegates.notNull()람다형태라 마지막 행이 정의 값[예시]val age: Int by lazy {    println("age 초.. 더보기
Kotlin 기초 2편 안녕하세요! Kotlin 기초 1편에 이어서 2편 진행해보겠습니다. 1. 반복문for문과 while문이 쓰이는데 while문은 기존 자바와 동일한 구조이기 때문에 부연설명은 하지 않고 for문에 대해서만집중해서 설명하도록 하겠습니다.  for(i in 1..10){ println("숫자: $i")} 1부터 10까지 값을 출력해주는 반복문입니다.  기본적으로 1씩 증가하며 1..10 으로 하게되면 1 ≤ .. ≤ 10 이란 구조를 갖게 됩니다. for(i in IntRange(1, 10)){ println("숫자: $i")}위와 동일한 결과입니다.  단, 표현하는 방법을 IntRange라는 함수를 사용하여 1부터 10까지의 범위를 만들어 출력하게 됩니다. for(i in 1 until 11){ .. 더보기
Kotlin 기초 1편 Kotlin을 처음 시작했을때 기초를 잘 다지고 가야 나중에 개발할 때 햇갈리지 않을 것 같아서 다시 정리해봅니다. Kotlin ↔ Java1) 안정성 확보: NPE(Null Pointer Exception 안정화)2) 상호운용성3) 실용성4) 간결성  Kotlin 코드를 보고 내용이 이해가 되지 않는다면 아래 그림처럼 선택하여 Java로 변경한 코드를 확인하면 됩니다.  Kotlin에서 알면 유용한 것들에 대해 먼저 알려드리겠습니다. 1) 함수의 오버로딩을 인자로 처리할 수 있다?fun main(){ val greet: String = GreetClass().Greeting(name = "성호", dayOfWeek = "월") val greet2: String = GreetClass().Gr.. 더보기

반응형