일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- IOS
- Android
- imagepicker
- 개발
- Alamofire
- ayncAfter
- SplashFragment
- viewpager2
- dispatchQueue
- SWIFT
- MemoList
- 스터디
- javascript
- retrofit2
- CalendarView
- web
- ViewModel
- InAppPurchase
- RecyclerView
- MotionEvent
- progressbar
- RxJava
- CSS
- UIPickerView
- 실행지연
- aab
- Dropdown
- DispatchTouchEvent
- Kotlin
- HTML
- Today
- Total
목록Kotlin (18)
멜팅비의 개발 공부

Reactive Programing 프로그램 자신의 주변 환경과 끊임없이 상호작용을 하는데 프로그램이 주도하는 것이 아니라 환경이 변하면 이벤트를 받아 동작 (데이터의 흐름과 전달에 관한 프로그래밍 패러다임) 데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 메서드가 업데이트 되는 방식 사용하는 이유 사용자 경험을 향상시키고 싶어함 ⇒ 네트워크 운영을 위한 비동기 작업 필요 안드로이드의 어려움 = 비동기 처리 및 에러 핸들링, 수많은 핸들러 및 콜백으로 발생하는 디버깅 문제, 이벤트 중복 실행 등 ReactiveX 비동기 프로그래밍과 Observable 시퀀스를 이용해 이벤트를 처리하기 위한 라이브러리 장점 효율적으로 신속하게 비동기 처리를 도와줌 함수형 프로그래밍을 일부 지원함 옵저버..

retrofit을 통해 네트워크 통신을 하는 경우 로딩을 구현하는 경우가 종종 있다. ProgressBar Dialog 같은 경우 Full Screen으로 떠야 하는 경우들이 있는데 Full Screen으로 뜨도록 하기 위해 구글링을 자주 하는 것 같아서 정리도 할겸 포스팅하게 되었다. (지금은 팝업 같은 경우 공통으로 사용하는 경우가 많아서 모듈화해서 사용한다.) Full Screen Dialog를 만드는데 크게 2가지 방법을 사용하고 있다. style.xml에 스타일을 정의해서 구현하는 경우 📒android:windowIsFloating true일 경우 Dialog가 자식요소 만큼만 view size를 가진다. false일 경우 Dialog가 전체 화면을 사용한다. 📒android:windowBack..

코틀린 Collection 함수 스터디 내용 정리 List 데이터가 저장하거나 삭제될 때 순서를 지키는 Collection Mutable(변할 수 있는)과 Immutable(불변의)을 모두 지원 Immutable List = 수정할 수 없는 List get(조회)만 가능 val fruits = listOf("apple", "banana", "kiwi", "peach") fruits.get(2) // 실행결과 > kiwi fruits[1] // 실행결과 > bananan fruits.size // 실행결과 > 4 fruits.indexOf("peach") // 실행결과 > 3 Mutable List = 수정할 수 있는 List add /addALL / remove / removeAt 등 추가, 삭제가 가능..
새로 들어가는 프로젝트에서 처음으로 BottomSheetDialogFragment를 구현 할 일이 생겼다. BottomSheetDialog는 앱의 하단에서 올라오는 팝업창을 구현할 때 사용한다. 라이브러리 의존성 추가 implementation 'com.google.android.material:material:1.4.0-alpha01' xml ... BottomSheetDialog를 구현하기 위해서 최상단 LinearLayout에 app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" 를 추가해야 한다. 이렇게 설정하면 하단에 펼쳐지는 방식으로 자식뷰가 동작하게 된다. 코드 class BottomCalendar(..
ViewModel에서 Dialog를 생성할 때 android.view.WindowManager$BadTokenException: Unable to add window 에러가 발생했다. 발생원인은 Dialog 생성 시 파라미터로 넘긴 context를 applicationContext로 넘겨서 발생한 에러였다. ViewModel에서 해결 할 때는 메서드 호출 시 view를 넘겨서 view.context를 사용했다. // data에 view import viewModel.someFunction(v)}" 일반적으로 해결하고자 할 때는 applicationContext 대신 activity(this)를 넘기면 된다.
SplashFragment를 MotionLayout으로 구현한 뒤 애니메이션이 끝난 뒤 MainFragment로 이동이 필요했다. 보통은 Activity로 구현해서 SplashActivity에서 MainActivity를 Intent로 실행시킨 뒤 SplashActivity를 종료시켰지만, 이번 프로젝트는 single Activity 구조로 Navigation을 통해 화면을 이동시켰다. override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) Handler(Looper.getMainLooper()).postDelayed({ lifecycleScope.laun..
Array → ArrayList val array = Array() val arrayList = array.toCollection(ArrayList()) ArrayList → Array val arrayList = ArrayList() val array = arrayList.toTypeArray()
개발 중 버튼을 눌렀을 때 특정 뷰에 강제적으로 스크롤하는 이벤트를 코드로 구현해야 했다. MotionEvent.obtain()을 통해 터치 이벤트를 수동으로 주면 되는데, 처음에는 스크롤 효과가 아닌 드래그 효과가 되어 많이 고생을 했다. 혹시라도 수동으로 스크롤 효과를 주고 싶은 경우가 있을 때 참고하면 좋을 것 같다. val downTime = SystemClock.uptimeMillis() val eventTime = SystemClock.uptimeMillis() val x = 0.0f val y = 250.0f val metaState = 0 val motionEvent1 = MotionEvent.obtain( downTime, eventTime+1000, MotionEvent.ACTION_D..