안드로이드 UI 작업 중, 간혹 원 모양의 View가 필요한 경우가 있습니다. 다음과 같이 Background Resource를 커스텀으로 만들어주는 방법도 있으나, de.hdodenhof:circleimageview 라이브러리를 통해 Circle Image View를 바로 생성하는 방법 또한 있습니다. https://github.com/hdodenhof/CircleImageView ImageView를 확장해서 만들어진 라이브러리이기 때문에 기본 사용법은 ImageView와 동일합니다. implementation 'de.hdodenhof:circleimageview:3.1.0' 아래와 같이 레이아웃을 삽입해주고, 각종 속성들을 설정해줍니다. 옵션 중 civ_border_~ 형태의 옵션들을 통해 Circl..
ViewBinding을 프로젝트에 적용 후, 빌드 과정에서 제목과 같은 Error가 발생했다. - ViewBinding 적용 방법 //In build.gradle(:app) buildFeatures { viewBinding = true } 문제가 발생한 위치를 찾아보니 매우 많은 수의 View들이 사용되는 위젯 레이아웃에서 발생한 문제였다. 현재 위젯은 By Id 기준으로 사용 중이니, 다음과 같이 최상위 View에 ViewBinding 적용을 무시하도록 하면 해결된다. 참고 https://stackoverflow.com/questions/64633323/gradle-too-many-parameters-for-viewbinding
원래 안드로이드에서는 Activity로부터 결과 값을 수신 받을 때, startActivityForResult(), onActivityResult()를 사용했지만 deprecated 되었습니다. 이에 따라 공식문서에서 제안한 새로운 방식인 registerForActivityResult()를 사용해보겠습니다. private lateinit var resultLauncher: ActivityResultLauncher 먼저, MainActivity에서 값을 제네릭으로 처리해줄 Launcher 인스턴스 변수를 생성합니다. Intent 객체를 전달받기 위해 Intent를 제네릭에 명시해주었습니다. nextBtn.setOnClickListener { val intent = Intent(this, SecondActi..
안드로이드에서 앱 구현 중, 다음과 같이 툴팁 메시지 창이 필요한 경우가 있습니다. 라이브러리를 통해 해당 기능을 구현해보도록 하겠습니다. 자세한 내용은 아래 링크를 통해 확인 부탁드립니다. https://github.com/skydoves/Balloon GitHub - skydoves/Balloon: Modernized and sophisticated tooltips, fully customizable with an arrow and animations for Android. :balloon: Modernized and sophisticated tooltips, fully customizable with an arrow and animations for Android. - GitHub - skydove..
디바이스 내의 연락처 앱을 사용하다보면, 여러가지 정보들을 포함시킬 수 있는 것을 확인할 수 있습니다. 프로필 사진, 전화번호, 생일, 메모, 연락처 이름 등 다양한 데이터가 존재하는데, 이 중에서 대표적으로 화면에 보여지고 있는 프로필 사진, 생일, 연락처 이름, 연락처 고유 ID 데이터를 우리가 직접 만든 앱으로 가져올 수 있도록 구현해보겠습니다. 먼저 디바이스 연락처 접근 권한을 얻기 위한 permission tag를 AndroidManifest.xml 파일에 추가해줍니다. private fun getContacts() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PE..
로그인 또는 비밀번호 찾기 기능 등을 구현 중, 이메일 검사를 진행하는데, 이때 유효한 이메일 타입 String이 아닐 경우에 대한 처리가 필요하곤 합니다. Argument로 넘어온 String이 이메일 형식인지를 확인하기 위해서 정규표현식을 사용합니다. 정규표현식이란? - 정규 표현식(regex, rational expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식언어입니다. 정규 표현식은 많은 프로그래밍 언어 또는 텍스트 편집기에서 문자열의 검색과 치환을 위해 지원하고 있으며, 이메일 형식이나 그 외 특정 문자 형식을 추출하거나 검사할 때 유용하게 쓰이고 있습니다. val emailExpression = "^[\\w.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}..