본문 바로가기
반응형

안드로이드/코틀린30

두서 없이 정리하는 어노테이션 안드로이드 개발자로서 개발을 진행하거나 공부를 이어 가다보면, 알지 못하는 새로운 어노테이션을 많이 발견하게 됩니다. 그럴때마다 그 주제에 대한 정리를 하자니 필요할 때 필요한 키워드가 기억이 안나는 경우가 있더군요. 그래서 궁금한 어노테이션을 발견할 때 마다 여기에 하나씩 적어둘까 합니다. @CallSuper 어노테이션 위의 어노테이션을 사용하는 메소드를 상속할 때에는 무조건 super 키워드를 사용해야 한다는 어노테이션입니다. 사용 이유는 이 메소드를 상속하는 다른 클래스에서 이 메소드를 오버라이딩할 때 꼭 이 메소드에 선언되어 있는 로직을 실행시킨 이후에 실행시키기를 원할 때 사용합니다. open class Animal { @CallSuper // @CallSuper annotation open f.. 2022. 2. 15.
jetpack compose(codelab) - 코드 기반 UI 작성 안드로이드로 열심히 작업을 하는 중에 jetpack compose라는 친구를 발견하게 되었습니다. 사실 이전에도 다른 아티클들 사이에서 여러번 봤었던 키워드이긴 한데, 그냥 jetpack의 구성요소겠거니 싶어 아는 내용(필요할 때 그때 찾아봐도 충분할 거라는 오만?)이라고 생각하고 덮어뒀던게 화근이 된 것 같습니다. 그래서 이번에 제대로 발견한 김에 이 jetpack compose가 무엇인지 알아보려고 합니다.(근데 사실 이게 안드로이드 UI 제작 기법이긴 한데 코틀린으로 작성해둬서 안드로이드 태그에 넣을지 코틀린 태그에 넣을지 한참 고민했습니다.) jetpack compose가 무엇인지? jetpack compose는 코틀린 안드로이드에서 사용되는 코드 기반 UI로, 선언형 UI입니다. 안드로이드를 위.. 2022. 2. 11.
안드로이드 리사이클러뷰 데코 이번 게시글은 지극히 주관적인 사유로 쓰는 글입니다. (물론 이전 게시글도 전부 지극히 개인적인 목적이긴 하지만...) 회사에서 작업을 하다보니 조금씩 다른 margin을 이용한 gridLayout 리사이클러뷰를 사용하게 되었습니다. 그래서 그냥 xml에서 마진과 패딩을 먹여 작업을 할까 했었는데 그렇게 되면 기존에 리사이클러뷰를 감싸고 있는 Layout에 먹인 패딩이나 마진과 중복되어 원하는 값을 찾는 것이 매우 번거로워졌습니다. 그래서 그런 부분을 신경쓰지 않고 리사이클러뷰 내부에서만 돌리는 방법을 위해 ItemDeco라는 친구를 결국 사용하게 되었네요.(이때까지 작업하기 귀찮아서 어떻게든 안쓰던 건 비밀...) 하여튼! 안만들게 되었으면 모를까, 만들게 되었으니 한 번 만들어놓고 계속해서 쓰려면 되.. 2022. 1. 7.
recyclerView 스크롤 이벤트 작성 jetpack이 나오고 난 후로 페이징 관련해서 paging이라는 친절한 친구를 제공하고 있습니다. 하지만 아직까지도 여러가지 이유로 인해 리사이클러뷰의 스크롤링을 조절해야줘야 하는 상황이 생기죠. 이를 사용하기 위해 간단하게 작성한 코드를 까먹을 때 마다 보러 오기 위해 남겨둡니다. 사실 리사이클러뷰 자체에 대해서 잘 모르는 경우에는 이 코드를 보고 단번에 이해하지 못하실 가능성이 높을지도...? /** * 스크롤 아래로 퍼센트 계산 * @return % */ fun scrollPercent(recyclerView: RecyclerView): Double { return (recyclerView.computeVerticalScrollOffset() * 1.0 / (recyclerView.computeV.. 2021. 12. 29.
코틀린 - apply, with, let, also, run(Scope Functions) 코틀린을 접하게 된 지 1년이 넘었네요. 처음 코틀린을 배우게 됐을 때 제일 당황했던 부분이 제목에 적어놓은 다섯가지였습니다. 저것들을 뭐라고 표현하는 지도 모르고, 어떨때 어떤 것을 사용해야 하는지도 모르는 채, 제가 받은 프로젝트를 분석하고 비스무리하게 사용하는데 초점을 둔 기억이 나네요. (사실 지금도 잘 모르겠습니다. 아무거나 돌려도 얼추 돌아가서...) 뭐, 시간이 지나고 여유가 생기니 이런 부분에 제 부족함이 느껴지기 시작했습니다. '이왕 사용할거라면 좀 더 알맞은 곳에 알맞은 함수를 사용해야 하지 않을까?' 하는 생각이 분명 들기 시작했다는 거죠. 너무 늦게 이런 생각을 한 게 아닌가 싶긴 합니다. 하여튼! 이러한 함수들을 범위지정함수라고 한답니다. 이러한 범위지정함수는 수신 객체와 수신 객.. 2021. 8. 24.
Live data와 ObservableField는 무엇일까? 회사에서 jetPack을 적용하기 위해 공식문서와 여러가지를 참조해서 ViewModel을 처음 생성할 때 저는 Live Data만 알고 있었습니다. 그래서 ObservableField가 무엇인지 알지 못했습니다! 그런데 제가 어쩌다 다른 회사에 지원을 하게 되었고, 그 회사의 사전 면접에서 LiveData와 ObservableField의 차이점이 무엇인지에 대해서 물어보는 것이었습니다. 아예 ObservableField에 대한 정보가 없던 저는 당연히 제대로 대답하는 것이 불가능했고!(안타깝지만 모르는 것을 아는 척하는 것보다는 모른다고 대답하는 것이 더 매끄러운 것 같아서 그냥 모른다고 대답했습니다.) 이후 저는 블로그에 꼭 글로 남겨둬야겠다는 다짐을 하게 되었습니다. 덕분에 이번 게시글의 주제는 Li.. 2021. 7. 26.
728x90