일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CalendarView
- HTML
- UIPickerView
- RxJava
- javascript
- retrofit2
- IOS
- SWIFT
- progressbar
- ViewModel
- aab
- 스터디
- Kotlin
- dispatchQueue
- ayncAfter
- InAppPurchase
- web
- Dropdown
- 개발
- DispatchTouchEvent
- Alamofire
- SplashFragment
- imagepicker
- MotionEvent
- viewpager2
- MemoList
- CSS
- Android
- 실행지연
- RecyclerView
- Today
- Total
목록Android (18)
멜팅비의 개발 공부
안드로이드 프로젝트를 진행하다 보면 종종 만나게 되는 UI 중 하나는 바로 달력이다. 달력 UI의 경우 디자인에 따라 custom이 많이 필요하게 되는데 그때 유용하게 사용되는 라이브러리를 소개하려고 한다. 나의 경우 달력을 한 주씩 보여주는 UI를 작업하게 되었고, 활용 코드와 함께 정리하려고 한다. kizitonwose/CalendarView 라이브러리 https://github.com/kizitonwose/CalendarView GitHub - kizitonwose/CalendarView: A highly customizable calendar library for Android, powered by RecyclerView. A highly customizable calendar library fo..
요즘 안드로이드 사이드 프로젝트를 개인적으로 진행하고 있다. 현재 진행 중인 사이드 프로젝트에서 공공 데이터 API를 활용하여 데이터를 처리하는 기능이 있는데, 공공 데이터 API에서 지원하는 Response가 xml형태로 내려와서 xml로 내려온 결과를 변환하는 작업에 대한 내용을 정리하려고 한다. XML Parser 라이브러리 종속성 추가 //xml parser implementation 'com.tickaroo.tikxml:annotation:0.8.13' implementation 'com.tickaroo.tikxml:core:0.8.13' implementation 'com.tickaroo.tikxml:retrofit-converter:0.8.13' kapt 'com.tickaroo.tikxml..
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..
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..