본문 바로가기

안드로이드

(161)
[AOS] 텍스트 영역에 대한 타 파트와 협의 일지 해당 포스팅은 개인적 견해로 작성했습니다. 이견이 있으신분들은 댓글로 남겨주시면 감사하겠습니다. 텍스트뷰 영역보다 글자수가 많으면 줄바꿈이 생깁니다. 당연한 결과이지만 개발중인 앱의 디자인을 헤치지 않기 위해선 디자이너 및 기획자와 협의를 해야합니다. 최대 몇글자까지 올수 있는지, 해당 영역을 넘길 경우 줄바꿈을 할건지, 말줄임표를 할건지 정해야합니다. 정답이 있는건 아니지만 저는 보통 앱이 이쁘게 보이는 방향으로 설득을 합니다. 하지만 상대 의견이 타당하면 들어주는 편입니다. 그게 개발자의 역할이라고 생각합니다. ( 가능/불가능을 진단하고, 개발자 선에서 또 다른을 의견을 제안 해주는것 ) | 예시 아래는 네이버 앱의 캡쳐본인데 실시간 추천 영상 리스트를 보면 제목은 한줄, 내용은 두줄로 통일성을 갖고..
[AOS] TextView에 Auto size 적용하기 textview에 auto size를 적용시 한정된 영역에 글자를 모두 담지 못할 경우 사이즈가 줄어 드는 원리기 때문에 원칙적은 width / height를 고정 해줘야합니다. ( 구글은 wrap_content 비권장 ) 하지만 height를 고정하면서 글자가 짤리지 않고 불필요한 여백을 갖지 않게 하는건 번거롭기 때문에 wrap_content를 사용하고 maxLines를 1로 지정해주면 됩니다. - autoSizeTextType : uniform으로 지정 - autoSizeMinTextSize : 작아질 최소 사이즈를 지정합니다. - autoSizeStepGranularity : 영역에 넘칠 경우 크기를 줄일 단위를 지정합니다. ( 위 코드는 1dp씩 줄어듬, 클수록 부자연스러움 ) - autoSiz..
[AOS] kaptDebugKotlin 빌드 이슈 해결 ( feat. m1 ) 이직한 회사에서 m1을 구매해 사용하고 있는데, 기존 프로젝트가 빌드에러가 발생 했습니다. Execution failed for task ':app:kaptQADebugKotlin'. > A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction > java.lang.reflect.InvocationTargetException (no error message) 읭? 코드를 바꾼게 없는데 발생한 에러가 발생해서 m1산거를 후회하던 찰나에 비슷한 이슈를 겪은 분을 발견해 에러를 고칠수 있었습니다. Room과 m1이 제대로 호환이 안되서 발생한 문제로 해결책..
[AOS] 무한 롤링 배너 구현 일정 아이템들이 무한으로 흐르는 배너를 구현하게 됐습니다. 위 앱은 솔드아웃 앱으로 상단 프로모션 밑에 각종 상품들이 유저 액션 없이도 흐르는걸 볼수 있는데 이와 같은 UI를 Recyclerview를 이용하여 구현 했습니다. | ListApdater.kt 다른 무한 스크롤과 동일하게 실제로 무한은 아니지만 무한처럼 보이게 하기 위해 ItemCount를 'Int_MAX_VALUE'로 설정합니다. 'position % items.size' 로 매 아이템이 반복됩니다. class ListAdapter: RecyclerView.Adapter() { private val items = listOf() inner class ItemViewHolder(private val binding: ItemBinding): R..
[AOS] Kotlin 확장 함수 자바에서 기존에 생성되어 있는 클래스에 새로운 매소드를 추가하려면 해당 클래스를 상속해서 사용하는 방법밖에 없지만 코틀린은 확장 함수를 사용해 상속없이 가능합니다. 예를 들어 Long타입의 현재 시간을 '2021.10'과 같이 변경해야할때 아래처럼 Utils 클래스의 메소드를 만들어 재사용하곤합니다. class Utils{ fun convertCalendarDate(tme: Long, format: String): String{ return SimpleDateFormat(format).format(Date(tme)) } } 확장 함수로 구현했을 경우 아래처럼 바뀝니다. fun Long.convertStrDate(format: String): String = SimpleDateFormat(format).f..
[AOS] Android Studio Fox Slow 및 한글 깨짐 해결 Android Studio나 그래들 버전을 잘 안올리는 안좋은 습관이 있다보니 새 프로젝트를 시작하거나, 새 노트북에 설정할때 버전을 올리곤 했습니다. 그런데 이번에 Fox로 업데이트 하면서 주기적으로 업데이트 해야한다고 깨달으면서 속도 이슈를 해결한걸 공유드립니다. | 업데이트전 버전 진행하는 개인 플젝들이 여러개 라는 핑계로 업데이트 내역들을 살피거나 하지 못해, 낮은 버전들을 사용하고 있었습니다. gradle : 4.0.2 Android Studio : 4.1.2 버전 ( 추정 ) Kotlin : 1.3.21 앞으론 주기적으로 업데이트 이력을 살펴보고 공부하고 반영하도록.. 할겁니다. 물론 협업을 하다보면 다른 사람들과 함께 의견을 조율하는게 중요하지만 설득할 이유를 찾아서 설득하도록 할겁니다. |..
[AOS] Navigation Component Navigation Component는 하나의 Activity에 다수 Fragment를 뒀을때 화면 이동을 도와줍니다. 기존에 Fragment Manager을 사용해서 Fragment들의 스택들과 Fragment별 전환 및 전환 애니메이션을 관리하던 방법은 다소 복잡해서 사용이 꺼려졌었는데 'Navigation Component'를 통해 관리하면 보다 직관적이고 간편하게 관리할 수 있습니다. 참고 자료 ※AndroidStudio 버전은 3.3 이상이어야 합니다. | build.gradle def nav_version = "2.3.5" implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androi..
[AOS] 인앱 결제 라이브러리 4 적용 및 AIDL 마이그레이션 ( + 광고 제거 기능 구현 ) ※신규앱의 경우 8월부터, 업데이트의 경우 11월부터 Billing Library 버전 3 이상을 사용해야 업로드 가능합니다. 마이그레이션 하시는 분들중 뭘 지워야할지 헷갈리신다면 기존에 추가한 모든걸 삭제해도 무방합니다. 간혹 저처럼 어떤걸 추가 했는지 헷갈리시는 분들을 위해 간략하게 기술하겠지만 그래도 헷갈리신다면 제가 작성한 기존 포스팅을 참고해주세요. 신규 적용 이신분은 스크롤을 조금만 내리셔서 '신규 라이브러리 적용'부터 참고해주세요 ! | 구버전 소스 제거 aidl 소스 파일 제거 기존에 사용중인 결제 관련 코드를 제거합니다. ( ex. labHelper..등등 ) 저의 경우 아래 사진에 있는 파일들이 AIDL ( 구 버전) 관련 파일들인데 모두 삭제하겠습니다 ( aidl 폴더와 util 폴더..