전체 글

Android 및 취미 활동을 공유하는 블로그입니다!!
Android/Compose

[Android] Jetpack Compose란?

안녕하세요 점냥입니다. Jetpack Compose는 작년에 stable 버전이 나오기도 했고 최근 Android 개발자 사이에서 큰 화제입니다. 최신 Android Ui Tool Kit인 Compose는 기존 뷰를 그리는 방식과 비교해서 훨씬 더 적은 코드로 재사용성이 높은 UI를 구현할 수 있다고 설명하고 있는데요. 좀 더 자세히 이 부분을 살펴보면서 Compose를 사용하면 어떤 점이 좋은지에 대해 알아봅시다 :) 1) Only Kotlin 안드 입문하시는 분들이 당황하는 이유 중 하나가 XML 언어라고 생각합니다. XML은 속성과 태그로 이루어진 간단한 언어이긴 하지만 또 다른 언어를 배운다는 점에게 부담스러운 요소가 될 수 있습니다. 게다가 android에서는 Ui에 관련된 요소들이 대부분 xm..

Android/Common

[Android] ViewTree 내에 동일한 ID을 가진 위젯이 존재할 경우 UI 상태 저장 오류 해결 방법 - 2

안녕하세요. 점냥입니다. 이번 포스팅은 지난 UI 상태 저장 시리즈의 두 번째 글입니다. 1. Android에서 제공해주는 Ui View 상태 저장 2. ViewTree 내에 동일한 ID을 가진 위젯이 존재할 경우 UI 상태 저장 오류 해결 방법 Andorid 위젯은 기본적으로 ID가 지정되면 상태를 저장한다고 지난 시간에 이야기를 했습니다. 그런데 이로 인해 생각하지 못했던 부분에서 문제가 발생할 수도 있더라구요.. 실제로 얼마전 회사에서 몇시간동안 원인을 몰라 머리를 끙 싸맸던 문제였습니다. 제목처럼 동일한 2개 이상의 ViewGroup를 가진 ViewTree 내에 동일한 Id를 가진 위젯이 존재하는 경우입니다. 먼저 문제 상황을 볼까요? 문제 상황 위처럼 EditText를 FrameLayout인 V..

Android/Common

[Android] Android에서 제공해주는 UI View 상태 저장 - 1

안녕하세요. 점냥입니다 작년 11월 글 이후로 6개월 만이네요. 우연히 처음 저의 블로그에 들어와 주신 분일 수도 있지만 만약 이 글로 인해 오랜만에 다시 찾아와 주신 분이라면 먼저 감사의 인사를 드리고 싶습니다. 6개월 공백의 이유를 물어보신다면 바쁜 활동으로 인해..라고 대답하고 싶지만 게으름 때문입니다. 취직으로 인해 몸과 마음의 긴장이 풀리면서 지금까지 자기 계발 시간 없이 게임만 한 것 같습니다.. 여느 때와 다르지 않게 일요일 새벽까지 게임을 하고 침대에 누웠는 데 그런 생각이 들더라고요. "주말이 벌써 끝났네. 나 이번 주말에 뭐했더라.. 게임만 했네" 내 자신이 한심하더군요. 게임 세계에서 즐거웠던 시간들이 컴퓨터를 끄고 침대에 눕자마자 저번 주와 변하지 않은 나를 마주하다 보니.. 이제는..

Android/Common

[Android] Paging3 + Admob Native Ad

안녕하세요 점냥입니다:) 좋은 앱 서비스를 완성했다면 그다음 고민은 수익 모델이죠. AWS 등 클라우드 서비스를 통해 서버를 구축했다면 다달이 나오는 서버 비용을 무시할 수 없기 때문이에요... 그렇기 때문에 우리 Android 개발자들은 Admob 광고 SDK를 앱에 잘 녹여들 수 있게 고민을 시작해야 합니다. !!!? 갑자기 Admob.. 왜..? 그 이유는 최근 Admob 네이티브 광고를 개인 프로젝트에 적용하느라 아주 고생을 많이 했기 때문이에요... 라이브러리 자체를 적용하는 것은 어렵지 않아요. 하지만 우리 프로젝트 앱들은 모든 코드가 Activity class 하나 파일에 들어가 있는 형태는 아니잖아요? 여러 가지 다양하고 복잡한 구조로 구성되어 있는 데, 공식 문서에서 설명하는 내용은 간단..

Android/Common

[Android] 좋아요 기능으로 알아보는 더블 클릭 방지하는 방법

안녕하세요. 점냥입니다:) 좋아요 기능이란? 이 글을 읽으시는 분들 모두 좋아요 기능이 어떤 기능인 지 아실 것이라고 생각되서 설명드리기 민망하지만, 일반적으로 하트 모양의 버튼을 클릭을 하면 좋아요 혹은 좋아요 취소 요청을 서버로 보내 UI를 업데이트하는 방식일 것입니다! 그런데 문제는 클릭 액션은 발생하기 굉장히 쉽다는 것입니다. 좋아요를 눌렀다가 다시 좋아요 취소 요청을 보내는 이러한 상황은 한번이 아니라 여러번 발생할 수 있습니다. 좋아요 기능은 클릭할 때마다 상태가 변경되고 그에 따른 서버 요청들의 결과들을 UI에 표시해 주어야 하는데 단순 클릭 리스너를 사용하면 정확하게 동기화 시키는 것은 쉽지 않습니다. 이 문제를 어떻게 해결해야 할까요? 하나씩 알아보고 가장 본인에게 잘맞는 방법을 사용하시..

Android/Common

[Android] fromHtml Bullet 속성 변경하기

안녕하세요 점냥입니다 :) Android에서 리스트 형태를 표현할 때, RecyclerView를 사용하는 것이 아닌 Html 파싱해서 화면에 보여줄 수 있습니다 Html 문서를 보면 API 1 때부터 Android에서 공식으로 제공해주는 클래스예요! 첫번째 리스트 아이탬 두번째 리스트 아이탬 본론으로 돌아와서 위와 Html을 볼까요? ui 태그로 리스트임을 명시하고 있으며, li 태그로 2개의 아이템을 가지고 있다는 것을 알 수 있네요. 리스트 형태로 텍스트를 표현할 때 위와 같이 Html로 내려주면 정말 편하더라고요. 현재 Html에는 color만 지정되어 있지만, Url Link와 다양한 글자 색상, 글자 스타일이 있다면 더욱 Html을 파싱 해서 사용하는 것이 좋겠죠? Html Defulat 속성으..

Android/Compose

[Android] Compose Text 양끝으로 정렬하는 여러 방법

안녕하세요 점냥입니다:) Compose의 Text 함수는 텍스트 UI를 구현하는 함수입니다. Compose는 여러 속성을 지정하기 위해 Modifier 객체를 제공해주고 있는데 android:gravity로 지정했던 텍스트 내부 정렬 기능이 없더라고요. 공식문서에도 관련 내용이 없어서 찾아보며 공부한 내용을 정리했습니다. 구현하고자 하는 레이아웃 이번 포스팅에서 구현할 레이아웃은 사진처럼 Text가 양 끝에 정렬된 레이아웃입니다. 기본적으로 제공해주는 Compose 레이아웃 중 순서대로 가로로 정렬되는 Row 레이아웃을 사용하겠습니다. Compose용으로 ConstraintLayout 라이브러리를 제공해주지만 아직 알파버전이기 때문에 제외했습니다. Row 레이아웃 정렬하는 방법 Row 레이아웃의 속성 중..

Android/Error

[Android] Kotlin runBlockingTest 오류

안녕하세요 점냥입니다:) Kotlin으로 Android 프로젝트를 진행하면서 발생한 문제가 있고 해결 방법에 대해 말씀드리려고 합니다. 문제 상황 당시 Coroutine + Room 작동이 올바른지 테스트를 하려고 했고, Dao에 정의된 모든 함수들은 suspend로 정의되어 있기 때문에 코루틴 스코프가 필요했습니다. @Test @Throws(Exception::class) fun writeHistoryAndReadInList() = runBlockingTest { val history = History(searchWord = "test") historyDao.insertHistory(history) val findHistory = historyDao.findHistoryByWord("test") ass..

이야기/후기

[면접 후기] 판교에 위치한 청소 매니저 관련 서비스 회사

안녕하세요. 점냥입니다:) 오늘은 처음으로 신입 Android 개발자 면접 후기를 가져왔습니다. 제가 이번에 면접 본 회사는 판교에 위치해 있고, 청소 매니저 서비스와 관련된 회사입니다. Android 면접 질문에 대해 공유해드릴 겸, 이번 면접 경험이 매우 만족스러워서 포스팅을 작성하게 되었습니다. 1차 면접 서류를 넣고 나서 3~5일이 지난 후, 합격 결과와 면접 일자를 정해 달라는 메일을 받게 되었습니다. 요즘 코로나로 인해서 화상 면접으로 진행될 줄 알았지만 판교에 위치한 회사에서 대면 면접으로 진행했습니다. 저는 오히려 좋았습니다. 최근에 집에만 있다 보니 ㅎ.. 그런데 면접 당일 날까지 회사 위치를 직접 공지해주지 않아서 당황했어요. 면접 날 메일로 자세히 찾아오는 법을 링크로 건네주는 회사가..

Language/Java

[Java] Thread 강제 종료 시키는 방법

안녕하세요. 점냥입니다:) 이번 포스팅에서는 Java Thread를 외부에서 종료시키는 방법에 대해서 작성해보려고 합니다. 이 주제는 최근 기업 기술 질문에서 대답을 못한 질문 중에 하나로 정답을 찾고 정리하고자 이번 포스팅을 준비하게 되었습니다. while문에서 무한 루프를 돌고 있어 종료되지 않는 스레드, 외부에서 어떻게 강제 종료시킬 수 있는가? class SampleThread implements Runnable { @Override public void run() { while(true) { System.out.println("thread is running"); } } } 모든 Thread는 Runnable의 run() 함수 내 코드를 실행하고 함수의 모든 코드가 실행이 되면 스레드는 자동으로..

점냥
점냥's Log