목록안드로이드 (77)
우찬쓰 개발블로그
1. 자바 코드는 바이트 컴파일러에 의해 바이트 코드로 변경된다. 2. 바이트 코드는 이미 최적화가 되어있는 중간 언어이므로 손쉽게 기계어로 변경 가능하다. (JIT 컴파일러등에 의해) 3. 2.2 프로요 전 까지는 앱이 구동되는 와중에 실시간으로 자바 코드를 CPU에 맞게 변환되었다. 4. 2.2 프로요 부터는 JIT컴파일러 도입. 코드 최초 실행 시점에 바이트 코드를 기계어로 변경하고 캐시에 저장했다. 5. JIT(Just In Time)컴파일은 실행시점에 소스코드를 번역한다. 설치는 빠르지만 실행시점에 느리다. 번역한 정보를 메모리에 올려야 하기 때문에 메모리를 많이 먹는다. 6. AOT(Ahead Of Time)컴파일은 설치시점에 소스코드를 번역한다. 설치가 느리고, 번역을 해서 따로 파일을 저장..
View에 대한 하나의 애니메이션이 끝나고 다음 애니메이션, 그 다음 애니메이션.. 몇개를 연달아 호출하는 요구사항이 있었다. 공식 안드로이드 라이브러리를 찾다보니.. Listener를 각각 다는 방법 말고는 없는것 같아서 편의성 클래스를 하나 만들었다. (못찾은 걸수도..) https://gist.github.com/WoochanLee/934893722316a120f9955e4fd637dc4a Android Animation Chain Android Animation Chain. GitHub Gist: instantly share code, notes, and snippets. gist.github.com AnimationChain.kt 사용 방법 val animationChain = Animation..
안드로이드 웹뷰에서 특정 Web element가 존재하느냐에 따라서 다른 처리가 하고 싶은 경우가 있을 수 있다. 그럴경우 다음과 같은 방법을 써보자. webView.evaluateJavascript("(function() { var element = document.getElementById('desireId'); return element.innerHTML; })();") { html -> val isElementExist = !(html.equals("null") || html.equals("undefined")) if (isElementExist) { ... } else { ... } } 출처 : https://stackoverflow.com/a/51509696/9797457
/Applications/Android\ Studio.app/Contents/MacOS/studio
현재 개발하고 있는 토이 프로젝트에 RxJava는 쓰지않는데 EventBus기능이 필요해졌다. LocalBroadcastManager를 쓸수도 있겠지만, 이 클래스는 context를 필요로 하다보니 코드의 양이 늘어나는 문제도 있고, 현재 프로젝트의 아키텍쳐 구조를 헤칠것 같았다. 그래서 Coroutine에 있는 SharedFlow를 이용하여 EventBus를 구현해보기로 했다. 유저가 글쓰기를 하고나면, 다른 화면에서 이벤트를 받아서 리프레시 해주어야 한다. Coroutine 공식 문서를 보면 EventBus에 대한 가이드를 어느정도 해주고 있다. kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-sh..
MVVM 아키텍에서 LiveData를 쓰다보면 흔하게 마주할 수 있는 상황이 바로 Event 일회성 처리에 대한 문제이다. private val _eventStartSettingActivity = MutableLiveData() val eventStartSettingActivity: LiveData get() = _eventStartSettingActivity MainActivity로부터 SettingActivity를 시작하는 다음과 같은 event용 LiveData가 있다고 해보자. 이 이벤트를 emit하는 곳은 activity_main.xml에서 onClick을 처리하도록한 databinding이라고 생각하고, 이 클릭이벤트의 대한 메소드를 아래와 같이 정의했다. fun onClickSettingMe..
안드로이드 10부터 다크모드를 지원하기 시작했지만, 실제 적용해본적이 없어서 토이프로젝트에 적용해보기로 했습니다. 일단 결과물을 볼까요? 저는 기본적으로 흰색과 검은색으로 테마를 정했기 때문에, 깔끔한 다크모드가 적용된 것을 보실 수 있습니다. 그럼 바로 그 과정을 시작해봅시다. 위처럼 기존에 하드하게 박혀있던 컬러를 걷어내야 되겠죠? 이제는 values에 있는 color.xml을 복사해서 한벌을 더 준비해줍니다. 다크모드에 들어갈 color.xml은 values-night에 넣어주시면 됩니다. 그리고 저는 텍스트 컬러를 직접 이름으로 구분하여 컬러를 각각 다르게 넣어줬습니다. themes도 마찬가지로 나누어서 두벌을 준비하고, 각각의 설정 컬러를 새롭게 적용해줍니다. 이렇게만 하면 끝입니다! 라고 말하..
chrome://inspect
EditText 에서 clearFocus를 호출하는 기능을 넣고, 잘 되는것 까지 확인한 후에 QA넘겼는데, 일부 폰에서 제대로 focus가 사라지지 않는 이슈가 있었다. 문제의 폰은 샤오미 Redmi 6였고, focusable을 root 뷰에 true로 준 상태인데도 불구하고, 제대로 먹히지 않았다. 결국 문제를 찾고보니 특정 기종에서는 android:focusableInTouchMode 도 true로 해줘야 되는 것으로 확인 되었다. 귀찮지만 아래의 두개 다 true로 주는 것을 기억하도록 하자. android:focusable android:focusableInTouchMode