카메라 캡쳐 및 QR 코드 인식 영역에서 가운데가 뚫린 형태의 뷰가 많이 사용되고 있습니다. 위와 같이 가운데가 뚫린 Overlay 형태의 뷰를 그리는 방법에 대해서 알아보겠습니다. 원래는 xml 단계에서 처리할 수 있을거라 예상했지만, Round Corner 형태의 사각형을 사용하기 때문에 onDraw 단계에서 직접 그려주는 방법으로 방향을 잡았습니다. 안드로이드 뷰를 그리는 LifeCycle 함수 중, Overlay 커스텀 뷰 제작에서 사용할 것들만 간단히 살펴보겠습니다. 1) onMeasure() 에서 사이즈를 측정하고, 2) layout() 뷰의 위치와 크기를 할당합니다. 그리고 3) dispatchDraw() 에서 그립니다. 레이아웃인 뷰는 onDraw() 를 호출하지 않고, onDispatch..
Dialog 안에 ViewPager를 넣는다. 그리고 ViewPager에 FragmentPagerAdapter를 적용시킬때 다음의 에러가 발생한다. vp_space.adapter = PagerAdapter(supportFragmentManager) // 에러 vp_space.adapter = PagerAdapter(childFragmentManager) // 정상 동작 NestedFragment 들은 FragmentManager를 전달할 때 child의 것으로 전달해야 한다. 이걸 몰라서 반나절을.. 흑 https://developer.android.com/about/versions/android-4.2.html#NestedFragments Android 4.2 APIs | Android Develope..
mvc, mvp, mvvm 등 많은 Architecture 들이 있다. 먼저 왜 이러한 구조 방안이 생기게 되었을까? 1. 좋은 유지보수 2. 깔끔한 코드 분리 (특히 view, model 간의 분리) 3. Testing 가능한가 보통 mvc 패턴에서의 코드 사용 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { fab.setOnClickListener { // 데이터 갱신 요청 코드 // fun getItems(): arrayList() // Model에 접근해서 데이터를 가져옴 // 위의 데이터를 이용해서 View 갱신 } } } Controller는 위의 onClickListen..
봐도봐도 까먹고, 조금 안사용하면 또 까먹게 되는!! Android에서 UI Thread가 어떻게 도는지, 그리고 직접 작성한 Custom Thread에서 UI 처리는 어떻게 하는지 알아보자. 1. UI 스레드 구성 Thread, Message Queue, Looper, Handler 에 대해서 알아야 한다. 1. Thread 프로세스 내에서 실행되는 세부 작업의 단위 (백그라운드 작업 처리를 해봤다면 모를 수가 없는 거죠??)2. Message Queue Message 혹은 Task를 담는 Queue이다. Task는 Runnable 인터페이스를 구현한 오브젝트이다. 그렇다면, 누가 Message(또는 Task)를 Message Queue에 갖다 놓는건가?? 바로 핸들러이다.3. Handler 핸들러는 ..