본문 바로가기

반응형

전체 글

(54)
[Android + Kotlin] 아이폰의 스와이프하여 뒤로가기 기능을 구현해보자. 핸드폰의 화면이 넓어짐에 따라, 이전 화면 이동을 위해 back 키를 누르는 것이 불편해지고 있습니다. 이를 위해 아이폰의 스와이프하여 뒤로가기 기능을 유사하게 만들어보겠습니다. 위의 영상과 같이 왼쪽에서 오른쪽으로 스와이프를 하면 화면이 닫히는(이전화면으로 이동하는) 기능입니다. 위의 기능은 GestureDetector에 TouchEvent를 전달하여 사용자 (왼쪽->오른쪽 이동)제스쳐를 감지하여 화면을 종료하도록 구현할 예정입니다. 1. GestureListener를 왼쪽 -> 오른쪽으로 이동하는 제스춰를 감지하도록 구현합니다. interface OnSwipeCallback { fun onLeft() fun onRight() } class OnSwipeGestureListener(val callbac..
[Android Kotlin] @BindingAdapter 를 사용하여 DataBinding 끝내기 BindingAdapter는 일반적인 View 에서 제공하는 속성이 아닌, 커스텀이나 개발 코드가 필요한 경우에 사용을 합니다. 예를 들어, ImageView에서 url 로 이미지를 로딩을 하여 표시해야 한다면, 기존에는 Activity에서 이미지를 로드하여 imageview에 표시하도록 구현을 해야했습니다. 그리고, 이런 로직이 화면마다 필요하다면 모든 Activity에 동일하게 구현을 해야 했죠. 이런 번거로움과 코드량을 줄여주는 것이 BindingAdapter 기능입니다. 위의 예를 코드상으로 구현해 보겠습니다. layout xml의 ImageView에 app:profileUrl 이라는 속성을 추가하고 이미지 url을 할당하였습니다. 이제 이 profileUrl 속성의 값을 받아서 이미지를 로드하여..
[Dev Tools] milliseconds(밀리초) <-> data(날짜) 로 변환하는 사이트 사용자가 게시물을 작성해서, 서버에 저장하고, 다시 목록으로 표시하는 일반적인 앱을 개발하게되면 시간값을 milliseconds(Long 타입)를 사용하게 됩니다. 그리고, 개발이나 디버깅시에 서버에서 전달해주는 milliseconds를 사람이 알아볼수있는 UTC time 으로 변환을 해야할때가 있습니다. 물론 string format 으로 변환하여 디버깅을 찍어 볼수도 있겠지만, 개발없이 서버에서 전달받는 데이터를 변환하여 확인만 하는 경우가 굉장히 많습니다. 이럴때엔 아래와 같은 사이트가 아주~아주~ 유용합니다. Current Millis Convert milliseconds to date-time. Link to a moment. currentmillis.com 실시간을 UNIX time 을 표시해..
[Flutter Dev] Theme 를 이용한 텍스트 스타일과 폰트 적용하기 앱개발에서 Text 는 빼놓을수 없으며, 텍스트마다 스타일을 적용해야 합니다. 다만, 앱에 들어가는 텍스트는 일정 패턴이나 몇가지 스타일을 따릅니다.(텍스트마다 스타일이 다르면 UI적으로 난잡해보이겠죠) 이런 몇가지 패턴의 스타일을 Text 위젯을 사용할때마다 적용하는 것도 번거롭고, 추후 텍스트의 스타일 변경시에도 번거로운 작업이 아닐 수 없습니다. 이런 부분을 해소하고자 Theme를 사용합니다. Theme를 이용하면 앱전체에 속성이 적용이되기때문에, 추후 Theme에서 설정값을 변경시 앱전체에 반영이 됩니다. ThemeData 이미 기본 샘플 코드(프로젝트 생성시 자동으로 추가되는 코드)에 ThemeData가 구현되어 있습니다. return MaterialApp( title: 'Flutter Demo..
[Flutter Dev] 애니메이션 Splash / Intro 화면 전환 만들기 - AnimatedSwitcher 우리는 앱을 개발하면서 인트로 화면을 만들게 됩니다. 앱 시작시에 서비스에 필요한 버전 체크나 사용자 정보, 서비스 정보 등등을 수집 및 체크를 하게 됩니다. 위의 작업이 완료되면 서비스 화면으로 전환을 하는데, 이때 좀더 자연스럽게 전환을 하여 사용자에게 좀더 나은 UX 경험을 목표로 합니다. 이번 게시물은 이와같은 인트로 화면에서 애니메이션을 통해서 자연스럽게 서비스 화면으로 넘어가는 기능을 구현하도록 하겠습니다. AnimatedSwitcher 이번 개발의 핵심 위젯으로, 화면 전환시 애니메이션을 담당합니다. 다양하게 사용할수 있는 위젯이지만, 이번 게시물은 AnimatedSwitcher에 대한 글이 아니므로 간략하게 사용하고 넘어가겠습니다. 개발 코드는 기존 게시물에서 사용했던 프로젝트에 추가 구현..
[Android Kotlin] TransactionTooLargeException 해결 방법 크래시틱스를 보던중에 TransactionTooLargeException 이 발생한 이슈가 올라와서 수정한 내용을 공유합니다. TransactionTooLargeException 넌 누구냐?!! 안드로이드 레퍼런스 사이트에는 아래와 같이 나와있습니다. The Binder transaction buffer has a limited fixed size, currently 1MB, which is shared by all transactions in progress for the process. Consequently this exception can be thrown when there are many transactions in progress even when most of the individual t..
[Flutter Dev] 디버깅을 위한 logger 를 사용해보자. 우리가 개발을 하다보면 수많은 난관과 어려움에 봉착하게 되는데, 그때마다 이슈를 해결하기위해 log를 찍어서 확인을 합니다. 이렇게 개발자에게 필수적이고, 편리한 logger 라이브러리가 있어서 소개 드립니다. https://pub.dev/ 사이트에서 'logger'로 검색을 합니다. 검색결과 맨 위에 logger라고 나옵니다.(오른쪽의 스코어를 보면 이 라이브러리가 얼마나 많이 쓰이고 있는지 알수 있습니다.) 상세 내용으로 들어가서, Readme를 잠깐 훑어보고 Installing 탭으로 이동하여 설치 방법을 확인합니다. 다른 라이브러리와 마찬가지로 pubspec.yaml 파일에 추가해주면 되네요. 위와 같이 라이브러리를 추가한 후에, (안드로이드스튜디오 오른쪽 상단) "Pub get"을 눌러줍니다. ..
[Android Kotlin] 안전하게 Enum 타입 사용하기 이번 게시물에는 제가 사용중인 Enum 타입을 안전하게 사용하는 방법을 공유하고자 합니다. 우리는 서버에서 전달받은 데이터를 enum 타입으로 변환하여 사용하는 경우가 많이 있습니다. 그런데, 서버 데이터에서 앱에 정의되지않은 데이터를 보낼경우, 당연히 exception이 발생하게 됩니다. 이런 부분에서 좀더 안전하고, exception이 발생하지 않도록 한다면 좀더 견고한 앱이 될겁니다. string 데이터를 enum 타입으로 변환하기 위해서는 valueOf() 를 사용하는데, 이때 enum에 정의되지 않은 string이 입력이 되는 경우엔 IllegalArgumentException 이 발생합니다. 그래서, try.. catch 로 exception 처리를 하게됩니다. enum class Fruit ..

반응형