Programming(178)
-
ng-include로 불러온 페이지의 Controller가 두 번 호출되는 문제
임베디드 장비에 서버를 올려서, 장비의 설정을 변경할 수 있는 웹 어플리케이션을 서비스하고 있다. 그건 그렇다치고 몇 년 전부터 골치아픈 문제가 있었는데, ng-include를 사용해서 페이지를 로드했을 때 연결된 Controller가 두 번 호출되고 있었다. Controller가 두 번씩 호출되는 문제는 생각보다 골치아픈 문제였다. 장비에서 받아오는 데이터가 많으면 많을수록 Controller에서 데이터를 가공하는 코드도 복잡해지기 마련이었는데, Controller가 두 번 로드되면서 초기화하는 코드가 두 번 동작하는 것도 환장할 노릇이었다. 단순히 사용자에게 현재 장비의 설정값을 보여주고, 변경할 수 있게끔 하는 페이지라면 문제는 없었다. 하지만 특정 UI가 다른 UI의 값들과 의존관계가 있다거나, ..
2019.03.11 -
[Android] Parcelable in Kotlin
[스마이트]일단 뼈대는 완성했다.를 만들면서 Activity간에 Data Class를 전달해야 할 일이 발생했다. 사실 아이템과 관련된 내용들을 전체 Activity에서 사용하기 때문에, 굳이 Data Class를 전달하지 않고도 사용할 방법을 찾으려면 찾을 수는 있었겠지만… 예전에는 Serializable을 사용했던 걸로 기억하지만, Serializable은 내부적으로 많은 리플렉션과 다량의 오브젝트를 생성하기 때문에, 안드로이드 앱의 전체적인 성능을 낮추며 배터리를 소모하는 원인이 된다고 한다. (Parcelable과 Serializable 비교, Charles 님) 물론 Kotlin이 Java Wrapper는 아니지만, Serializable을 사용하더라도 크게 다르지는 않을 듯 싶다. - (Kot..
2019.03.06 -
WebView에서 Alert가 동작하지 않을 때
WebView와 WebSettings라는 글에서 알 수 있듯이, 최근에 WebView를 사용한 기능을 추가하는 작업을 진행했다. 버튼을 누르면 WebView가 표시된 Activity를 출력해주고, WebView에서의 작업이 끝나면 기존의 Activity로 돌아가는 기능이었다. 기능을 추가하고났더니 담당자로부터 다시 한 번 메일로 연락이 왔다. 기능이 제대로 동작하지 않는다는 내용이었는데, 무슨 기능인지 다시 문의하고나니 Alert가 출력되지 않는다는 것이었다. WebView의 WebSettings를 이용해서 javascript를 사용하도록 설정하더라도, alert는 동작하지 않는다. alert자체가 Javascript에서 지원하는 게 아니라, 브라우저에서 지원하는 Web API이기 때문인 듯 하다. 다행..
2019.03.05 -
[Android/Kotlin] RecyclerView에 Divider 구분선 넣기
참조: RecyclerView [3] Divider 구분선 넣기, 키위남 님 How can a divider line be added in an Android RecyclerView?, StackOverflow XML에 위와 같이 선언되어있을 때, onCreate에서 item_list에 접근할 수 있다. item_list.addItemDecoration(DividerItemDecoration(this, LinearLayoutManager.VERTICAL)) onCreate에서 DividerItemDecoration 객체를 새로 생성한다. 생성자의 파라메터로는 Context와, LinearLayoutManager.VERTICAL값을 넘겨준다. 리스트가 Vertical이 아니라 Horizontal인 경우, ..
2019.02.27 -
Canvas의 Background와 Flickering에 대한 삽질 기록
캔버스 위에 이미지를 표시해주고, 그 위에 여러개의 박스와 라벨을 그려주는 UI를 구현해야 했다. 사용자가 캔버스 내에 사각형 형태의 영역을 지정할 수 있고, 이 영역의 외부는 어둡게 표시를 해줘야 했다. 설명하는 것보다는 구현된 내용을 보여주는게 빠를 듯 하다. 간단하게 설명하면 위와 같은 UI를 만들어야했는데, 네모난 영역의 모서리는 이동 및 크기의 변경이 가능했다. 네모난 영역의 외부를 어둡게 표시하는 것 자체는 큰 문제는 아니었다. fillRect를 이용해서 외부의 영역을 네 개의 구역으로 나눠, (0, 0, 0)에 0.5의 알파값을 주고 그려주면 됐다. context.strokeStyle="rgba(0, 0, 0, 0.5)"; context.fillStyle="rgba(0, 0, 0, 0.5)"..
2019.02.20 -
Android에서 사용하는 단위 정리
단위 설명 px Pixels. 픽셀 단위. sp/sip Scale-independent Pixels. dp와 비슷하나, 사용자가 선택한 글꼴 크기에 의해 크기가 자동으로 조절된다. 이 단위는 글꼴 크기를 지정하는 데 사용되도록 권장된다. dp/dip Device Independent. 160dpi 화면에서 1px이 차지하는 크기이다. 320dpi 화면에서의 1dp는 2px이 된다. in Inches. 인치. mm Milimiters. 밀리미터. 디바이스의 해상도가 천차만별인 만큼 글자의 크기를 지정할때는 SP를 사용하고, UI의 레이아웃을 지정할 때는 DP를 사용하는 게 좋다. Dimension, Android Developers px, dp, sp, 크기단위 사용법 및 정리, 잡캐의 무한도전기 px, ..
2019.02.19