Jetpack Compose로 Calendar 만들기
·
Jetpack Compose
Calendar 시작하며제작 중인 앱 ReReminder(가칭) Stashit는 물건과 구매 내역을 기록할 수 있는 앱이다. 기록 앱 특성상 날짜 관련 데이터를 가장 많이 다루게 되었고 이를 한눈에 메인 화면에서 확인할 수 있게 캘린더에 나타내고자 하였다. 찾아보니 몇 개의 라이브러리가 존재하는 듯하였지만 추후에 업데이트에 용이하도록 직접 만들어 보았다. 실행 화면&기능 소개• 좌우 스와이프 - 선택한 날짜가 이동한 페이지에 존재하지 않는다면 이동한 페이지의 첫째 날을 선택함 - 현재 페이지의 달에 포함되지 않은 날짜를 터치하면 그날을 선택하고 해당 달로 페이지를 이동함 - 화면 상단에 올해는 X월로 표현하고 나머지는 XXXX. XX로 표현함 • 상하 스와이프 - 위아래로 스와이프 시 화면..
highlight.js 코드 블록 텍스트 색 문제 해결하기
·
Tistory
문제 발생(보라색 텍스트)문제의 코드이다. androidstudio 테마를 티스토리에 추가해서 적용시켰지만 파라미터와 몇몇 일반 텍스트가 보라색으로 보인다. 테마를 받아온 highlight.js 사이트에서 해당 코드를 demo에서 kotlin/androidstudio으로 실행해 보면 보라색 텍스트로 보이지 않고 멀쩡히 흰색으로 잘 나온다. 해결 과정(삽질 과정)어디서 문제가 발생하는지를 찾는 것부터 헤맸다. 해결해 나간 과정을 설명할 것이니 해결책만 알고 싶다면 하단으로 바로 이동하면 된다. 1) 현재 사용하고 있는 티스토리 스킨인 hELLO 스킨에서 사용하고자 하는 androidstudio 테마와 충돌이 발생해서 보라색으로 보이는 것을 추정-> androidstudio 외 다른 테마를 적용해본 결..
Kotlin LocalDateTime 날짜/시간 형식 지정하기
·
Kotlin
시작하며LocalDateTime은 날짜(연월일), 시간(시분초)을 포함하는 자바의 클래스다. 이를 Kotlin에서도 사용할 수 있는데 오늘은 LocalDateTime을 문자열로 포맷하는 방법에 대해서 알아본다. LocalDateTimeLocalDateTime에서 간단히 현재 시간을 표현하는 방법은 다음과 같다. val currentDateTime = LocalDateTime.now()이를 Text나 printIn, 로그 등 어떤 방식으로든 확인해 보면 '2024-07-26T13:45:30' 같은 년-월-일-시간-분-초 형식으로 표현된다(T는 ISO 8601 형식에서 날짜와 시간을 구분하는 문자이다). 이를 원하는 문자형식으로 바꾸기 위해서는 패턴을 지정해 포맷팅을 해주어야 한다. Formatterfu..
dependency 유형 알아보기
·
Android
Dependency(종속 항목)란?안드로이드 스튜디오에서 Gradle 빌드 시스템을 사용하면 외부 바이너리나 다른 라이브러리 모듈을 빌드에 종속되는 항목으로 추가할 수 있다. dependencies 블록에서 여러 가지 종속 항목 구성을 사용해 라이브러리 또는 플러그인을 종속 항목으로 선언해 사용하게 되는데 이때 사용하는 구성의 이름을 통해 어떤 범위에서 어떤 시기에 사용되는지 유추할 수 있다. 오늘은 각 구성의 특성에 대해서 알아본다. implementation가장 일반적으로 사용되는 유형으로, 현재 모듈 내에서만 사용되며 외부 모듈로 노출되지 않는다. 따라서 api와는 달리 빌드 시스템에서 다시 컴파일해야 하는 모듈 수가 줄어들어 빌드 속도가 크게 개선될 수 있다. 따라서 대부분의 앱과 테스트 모듈은 ..
Kotlin Long to LocalDateTime, LocalDateTime to Long 변환하기
·
Kotlin
코틀린에서는 확장 함수를 직접 생성하여 별도의 함수를 호출하며 값을 입력해 줄 필요 없이 값에 바로 확장함수를 사용할 수 있다. 코틀린에서 자주 사용하게 되는 자바의 시간 클래스 중 LocalDateTime은 DatePicker 같은 컴포넌트에서 사용하려면 Long타입의 유닉스 시간으로 값을 변환해 입력해주어야 한다. Long to LocalDateTime// Long -> LocalDateTimefun Long.toLocalDateTime(): LocalDateTime { return LocalDateTime.ofInstant(Instant.ofEpochMilli(this), ZoneId.systemDefault())}Long타입의 유닉스 시간은 1970년 1월 1일로부터 경과 밀리초을 나타내며 ..
Kotlin takeIf 알아보기
·
Kotlin
Kotlin에서 제공하는 다양한 표준 라이브러리 함수들은 보다 간결하고 안전한 코드를 작성하는데 도움이 된다. 오늘은 그중에서 takeIf를 기본 사용법과 여러 가지 예제를 통해 이해하기 쉽게 설명해 본다. takeIf란?공식 문서를 참고해 보면Returns this value if it satisfies the given predicate or null, if it doesn't.주어진 Predicate를 만족하면 그 값을 반환하고 만족하지 않다면 null을 반환하는 함수이다. 자바의 if와 비교하자면, if은 조건에서 사용한 뒤 본문에서 필요하다면 다시 호출해 사용해야 하지만, takeIf문은 takeIf를 사용한 객체나 조건을 호출 없이 람다에서 다시 사용할 수 있어 특정 상황에서 유용하게 사용할 ..