android20 SpinnerAdapter를 써봤는데 큰 단점이 있더라고🤣 Spinner란 왼쪽뷰이고 오른쪽 DropDown 리스트를 손쉽게 붙일 수 있게 해준다. (Spinner + ArrayAdapter) 사실 요즘은 AutoCompleteTextView 에 ArrayAdapter를 연결하는 방식으로 많이 쓰고 있다. 다만, 오래된 코드의 경우 Spinner 를 사용하는 경우가 종종 있으니 알아는 둬야겠지.. 커스터마이징 하고자 했던 것은 DropDown 아이템을 클릭했을 때 리스너를 붙이는 것이었다. 그러기 전에 일단 Spinner 와 AutoCompleteTextView 에서 ArrayAdapter의 동작 차이점을 살펴보자. Spinner vs AutoCompleteTextView Spinner binding.spinner.onItemSelectedListener = o.. 2023. 5. 16. view ratio 강제 적용하기 특정한 뷰의 가로 세로 비율을 특정 값으로 조정하고 싶은 경우가 있다. 어떠한 방법들이 있을까? 가로 세로 비율을 1: 0.61 (세로 길이 = 가로길이 * 0.61) 로 지정한다는 가정하에 코드를 살펴보겠다. 1. Programatically 하게 적용하기 binding.ivCompany.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { override fun onGlobalLayout() { binding.ivCompany.viewTreeObserver.removeOnGlobalLayoutListener(this) binding.ivCompany.layoutParams.height =.. 2023. 4. 18. 나는 제대로된 Clean Architecture를 사용하고 있을까? 안드로이드 개발자들은 이제 Clean Architucture MVVM 패턴을 대부분 알고 있고 공통적인 개발 방향에 대해서 논의할 수 있을 정도의 기술 전파가 되었다고 본다. 그래서 다른 사람들의 코드를 보더라도 예전처럼 구조 파악이 안되는 경우가 많이 없어졌다. 하지만 과연 MVVM 아키텍처를 완벽하게 구현하고 있는 회사는 얼마나 될까? 모두 제각각 자기 회사의 레거시 코드, 개발자 인원, api 규격 등에 의해서 맞춤형 MVVM 패턴을 적용하고 있을거라고 생각된다. 사이드 프로젝트에는 내가 이해한 MVVM 패턴을 문제 없이 구현할 수 있다. 하지만 회사 코드는 내가 하고 싶은데로 할 수가 없어.. 내가 오늘 정리하고자 하는 것은 이렇다. Clean Architecture는 크게 2가지로 구분되고 있다.. 2023. 4. 14. ConstraintLayout - 가변형 속성 ConstrainedWidth, constraintHorizontal_bias 속성 활용 왼쪽에 가변적인 뷰가 있고, 오른쪽에 고정 뷰가 있는 아래와 같은 뷰를 구성하고자 했다. Constraint 속성 구성을 이렇게 구성해봤다. 가변뷰 startToStartOf : parent endToStartOf : 고정뷰 width : wrap_parent ellipsize : end 고정뷰 startToEndOf : 가변뷰 endToEndOf : parent width : 50dp 결과는 아래와 같이 되구려.. 이유는 startToStartOf 와 endToEndOf 의 속성의 우선순위가 같기 때문! 그래서 레벨이 같다면, 왼쪽에 있는 옵션이 우선 되는 것. 그렇다면, 왼쪽에 있는 가변뷰에 "나는 가변형이야! .. 2022. 5. 1. Compose 나도 시작해보려합니다✌️ Compose를 통해 layout (xml) 이 사라질 수 있다. 왜 바꾸게 되었을까? UI tookit에 새로운 기능을 제공 할 때 마다 API 버전을 올려야 하기 때문에 완전히 제공 되려면 오랜 시간이 필요하다. 커스텀뷰 개발 하면서, 너무 실수도 많이하게되고 기본 지식도 많아야해서 불편했죠? 뷰와 관련된 파일이 너무 많아진다. (style, attr, xml 등등) xml과 뷰(Activity, Fragment) 와의 통신에 대한 아키텍처에 대한 방법이 너무 다양하다! (개발자마다 선호도가 달라😂) 선언형 패러다임 코드 파악이 쉬워진다. 한 곳에 모여있으니까? 좋다. 명령형 vs 선언형 compose 특징 compose에는 Visibility = View.Gone 이런 코드가 필요 없다. Compo.. 2022. 3. 30. 스레드간 데이터 통신 스레드간 통신을 알려면 먼저 스레드가 어떻게 구성되고 돌아가는지 알아야 한다. Thread 구성 요소 Thread: 프로세스 내의 세부 작업 단위 Handler :아래의 2가지 역할을 한다. (다재 다능한 놈) Message, Runnable Task 를 Message Queue로 전달 Message, Runnable Task 를 실행 Looper : Message Queue에서 Handler로 전달 Message Queue : Message, Runnable Task를 저장하는 Queue 생각보다 복잡하다. 안드로이드 개발에서 가장 많이 하는 실수중에 하나가 Thread를 만들고 그 안에서 UI 변경 작업을 실행하는 경우이다. 바로 에러가 터진다! Thread th = new Thread(new Run.. 2021. 2. 16. 이전 1 2 3 4 다음