본문 바로가기

Android/Tips

안드로이드 개발시 유용한 필수? 라이브러리 추천 (Kotlin 업데이트) 대부분 알고 계시겠지만 앱개발하는데 있어서 유용한? 거의 꼭 필요한? 라이브러리를 소개합니다. 1. Glide -이미지 로딩 라이브러리. 여러 이미지 로딩 라이브러리 들이 존재하지만 속도가 매우 빠르며, 모양의 변형 (원모양, 사각모양 등), 여러 부가기능을 제공해준다. 기타 여러 이미지 로딩 라이브러리는 많음. ( picasso, AUIL, Fresco 등 ) - (참고) https://github.com/bumptech/glide- (참고 - 안드로이드에서 이미지 로딩 라이브러리 순위를 매겨놓은 사이트 )https://ourcodeworld.com/articles/read/929/top-10-best-android-image-loading-and-caching-libraries 2. Retofit -.. 더보기
AlertDialog 로 리스트 팝업 만들기 앱을 개발하다보면 어떤 다른 앱 또는 기본 제공 UI 와의 차별점을 두기위해 각 앱에 맞는 위젯을 만들어 쓰곤 합니다. 크게 어려운 것은 아니지만 간단한 팁 아닌 팁을 적어봅니다. 목표 : List형태의 선택 팝업. 그리고 리스트 내부의 각 row item view 를 커스터마이징 할수 있게 한다. 방법 : 1. 기본 위젯인 AlertDialog 를 이용한다. 2. AlertDialog.Builder.setItems() 가 아닌 AlertDialog.Builder.setAdapter() 를 적용한다. setItems 를 사용하게되면 기본 제공해주는 List 팝업이 된다.3. setAdapter 의 매개변수인 ArrayAdapter 를 필요에 맞게 ArrayAdapter를 상속한 customAdapter를.. 더보기
EditText 사용시 키보드 보이기 최근 특이한 현상이 발견되었네요. ㅎㅎ 화면에 EditText 를 사용시 기본적으로 커서가 focus되면서 화면이 열리게 됩니다. 근데 제가 원한 것은 커서와 동시에 키보드가 올라오길 바랬습니다. 하지만 아무리 해도 커서는 잡히는데 키보드가 보여지지 않았습니다. StackOverFlow 에 찾아보면 죄다 InputMethodManager 를 이용해서 키보드를 show하는 해결책이 나왔지만 역시 원하는데로 되지 않았습니다. 해결방법 : 부모 레이아웃을 ScrollView로 감싸주어 내부 레이아웃 자식으로 EditText를 두게 되면 자동으로 커서가 잡히면서 키보드가 올라오는 것을 확인 할 수 있음. 추가 Tip)ScrollView 사용하면서 자식 레이아웃에 match_parent 를 주었는데도 화면을 꽉 .. 더보기
Memory Leak 에 관하여 앱을 출시 하고나서 관리 하다보니 겪은 일이었습니다. 앱이 버벅대고 느려진다는 이슈였습니다. 굉장히 크리티컬한 이슈였지요. 원인을 찾아보니 OOM(OutOfMemory Exception) 에러였습니다. 허용 가능한 메모리가 꽉 차서 앱이 죽는 현상이 발생하는 것이었습니다. 이 원인을 해결하기위해 엄청나게 많은 시간을 쏟아부었습니다. 앱 내에 이미지를 보여주는 부분이 많았는데, 용량이 큰 이미지를 불러오거나 할 때 제대로 GC (Garbage Collect)가 되지않아서 메모리에 지속적으로 쌓이는 것이었습니다. 하지만 원인자체가 이미지 문제가 아니었습니다. 원인은 객체의 참조로 인해 화면 종료시 GC가 제대로 되지 않으면서 계속적으로 Activity 객체들이 쌓이게되고 큰 이미지를 가지고 있는 Activi.. 더보기
프로가드(Proguard), Retrofit 사용시 주의할 점 앱 출시후 굉장히 당황스런 상황이 있었습니다. 올리기 전 테스트할 때는 정상적으로 모든 기능이 잘 되던 것이 출시 후 기능이 아무것도 안되던 현상이었습니다. 원인으로는 프로가드(Proguard) 적용한 것이 문제였습니다. Retrofit을 사용시 Response 값으로 앱 내에서의 Beans 들의 변수 명에 맞게 매핑이 되도록 되어있는데, 프로가드를 적용하면서 앱 내의 Beans 들의 변수명이 다 바뀌면서 서로 매핑이 되지 않아서 발생하는 오류였습니다. 그래서 해당 Beans들이 있는 패키지 경로를 프로가드(Proguard) 예외에 추가하여 해결하였습니다. Retrofit과 프로가드(Proguard) 사용시 참고하셨으면 좋겠습니다. 더보기
Null 체크를 꼭 해야하는가 출시 후 또는 개발 하면서 항상 겪는 Crash Error 중 제일 많은 부분이 NullPointerException 오류였습니다. 처음 앱을 개발할 때에는 Null 체크를 제대로 하지 않은 채 기능의 동작여부만 확인 및 테스트 후 바로 출시 하곤 했습니다. 우선 이런식으로 개발을 하면 기본적으로 서버 측(Back-End) 과 클라이언트(Front-End) 측의 거의 발생하지 않는? 이슈 ( 트래픽 증가로 인한 서버 다운, 빈 데이터나 또는 null 데이터의 통신 등) 가 발생하지 않는다면 큰 문제가 없이 유지가 됩니다. 하지만 이런 상황들은 꼭 출시 후 일어나서 당황스러운 상황이 발생합니다. 서버측에서 보내는 json데이터가 조금만 바뀌어도 에러가 발생하는 상황이 발생할 수도 있습니다. 따라서 내린 결.. 더보기
이미지 Color Filter 적용 ImageView 에 컬러필터와 Overay (tint) 효과를 주는것은 완전히 달라보입니다. 방법은 두가지 입니다. 1. tint2. color filter tint 를 주면 완전 위에 덮어버리는 식이 되는데,color filter를 이용하면 안에 들어있는 이미지의 색상에 아에 녹아들어 전혀 다른 효과로 보이게 됩니다. 좀 더 시각적으로 나아보이는 부분을 선택하세요. 예>ImageView.setColorFilter(Color.RED, PorterDuff.Mode.Lighten); 더보기
Android API 버전별 정리 참고 Android API 에 대한 정리자료입니다. 자세한 내용 보다는 Wiki 에 있는 참고하시면 좋을 듯 합니다. (참고) https://ko.wikipedia.org/wiki/안드로이드_버전_역사 더보기