• ViewPager2 간단히 사용해보기

    안드로이드 ViewPager2의 알파 버전이 2019년 2월 7일에 릴리즈되었다. 새로운 기능으로는 RTL 레이아웃과 수직 스크롤링이 지원되고 기존 ViewPager 버그 수정으로 notifyDataSetChanged 기능이 완전히 동작한다. 샘플 코드 : https://github.com/dudmy/blog-sample 우선 build.gradle에 의존성을 추가한다. ViewPager2는 Android X 용으로 출시되어서 사용하려면 프로젝트가 Android X로 마이그레이션 되어야 한다. implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha01' 그리고 Activity 또는 Fragment에 ViewPager2...


  • .gitignore 동작하지 않을 때

    간혹 .gitignore 파일에 작성한 untracked 파일이 무시되지 않고 changes에 포함되는 경우가 있다. 이를 해결하기 위해서 하드디스크에 있는 파일은 그대로 두고 Git만 추적하지 않도록 해야 한다. 즉 git rm으로 tracked 상태의 파일을 삭제한 후에 git add으로 다시 파일을 추가한다. 이때 .gitignore 파일에 포함된 untracked 파일은 추가되지 않는다. git rm -r --cached...


  • Drag and Swipe RecyclerView

    RecyclerView에서 아이템을 편집할 때 사용하는 대표적인 제스처 2가지가 있다. Drag & Drop : 아이템 순서 바꾸기 Swipe to Dismiss : 아이템 제거하기 Android Support Library에는 RecyclerView에 위 기능 추가를 지원하는 유틸리티 클래스가 포함되어 있다. ItemTouchHelper ItemTouchHelper는 RecyclerView.ItemDecoration의 서브 클래스이다. RecyclerView 및 Callback 클래스와 함께 작동하며, 사용자가 이러한 액션을 수행할 때...


  • CharSequence와 String의 차이 (feat. StringSpannableBuilder)

    String? String은 하나의 클래스이다. Java 프로그램의 모든 문자열 리터럴은 이 클래스의 인스턴스로 구현된다. 중요한 점은 문자열 값은 작성된 후에 변경할 수 없다는 것이다. String 객체에 보관하는 문자열은 유니코드로 변형되므로 HTML과 같은 마크업 문자를 입출력할 때 문제가 발생한다. 이와 같이 마크업 문자를 입력하여 사용할 수 없기 때문에 변경할 수 없는 문자열이라고...


  • 코드 페스티벌 STAFF로 참여하다

    어제 즉, 9월 9일에 카카오 코드 페스티벌 본선이 진행되었다. 카카오에서 준비한 대학(원)생 프로그래밍 경진대회로 온라인 예선을 걸쳐서 오프라인 본선에 진출한 참가자들이 참여하였다. 나는 대회 참가자는 아니고 STAFF로서 참여하게 되었다. 그동안 행사나 컨퍼런스에는 항상 관람자(?)로서 아무도 모르게 조용히 가서 아무도 모르게 조용히 듣고 오는 입장이었다. 하지만 이번에는 STAFF로 지원했는데, 여러 가지...


  • Train my coding skills

    두 달여 전 알고리즘에 관련하여 온라인상에서 많은 논란이 있었던 것으로 기억한다. 물론 각자의 관점에 따라 생각이 다르겠지만, 어찌 되었건 현재에도 컴퓨터 과학에서 기초로 배우는 학문(?)이라는 것은 변함없다. 참고로 나는 알고리즘에 대한 지식이 얕고 퀴즈에 대해 두려움을 가지고 있는 상태다. 아직 실무에서 알고리즘의 중요성을 뼈저리게 느끼고 사용해본 입장은 아니다. 오히려 작년...


  • RecyclerView에 대한 고찰

    ListView Android 4.4(Kitkat) 까지는 아이템 목록을 보여주기 위해 ListView 위젯이 사용되었다. 그리고 더 좋은 성능(ex. smooth scroll)을 위해 사용 방법이 변해왔다. public class MyAdapter extends BaseAdapter { // override other abstract methods here @Override public View getView(int position, View convertView, ViewGroup parent) { View view = getLayoutInflater().inflate(R.layout.list_itme, parent, false); ((TextView)...


  • 첫 번째 경력에 대한 회고

    지난주 나의 첫 번째 직장에서의 생활이 끝이 났다. 약 1년 1개월 정도 다녔으니까 생각보다 짧은 기간에 퇴사하게 되었다. 이것저것 정리하다 보니 지난번 4개월간의 인턴 생활을 마치며 작성한 글을 오랜만에 읽어보았다. 이런 이야기는 민감한 부분이 있지만 작성해놓으면 당시의 생각을 돌아볼 수 있어서 도움이 되는 것 같다. 그래서 불필요한 내용은 빼고 간단하게...


  • Kotlin 사용하기? unresolved reference error

    기본적인 코틀린 세팅 참고: Getting started with Android and Kotlin [build.gradle] buildscript { dependencies { // ... classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.1' } } [app/build.gradle] apply plugin: 'kotlin-android' android { sourceSets { main.java.srcDirs += 'src/main/kotlin' } } dependencies { // ... compile 'org.jetbrains.kotlin:kotlin-stdlib:1.1.1' // ... } Error: Unresolved reference: Dagger…Component 여기까지 완료하고 빌드를...


  • 개선된 로딩 화면 (Splash Screen)

    예전에 안드로이드 로딩 화면 구현하기에 대해 포스팅한 적이 있다. 같은 내용에 대해 다시 글을 작성하는 이유는 보다 나은 방법을 알게 되었기 때문이다. 기존의 구현 위의 포스팅을 확인해보면 알겠지만, 기존에 사용했던 방법은 핵심은 로딩 화면에서 Handler.postDelayed를 이용하여 일정 시간의 지연을 주는 것이다. 이러한 구현 방법에 대해 사용자의 입장과 개발자의 입장에서 다시...