안드로이드 6

Android Q 부터 비 SDK 인터페이스 제한 하는 이유와 비 SDK 인터페이스 제한 확인하는 방법

android Q targetSdkVerison부터 공개된 SDK API만 사용가능하다. 이에 따라 android Q를 targetSdkVersion으로 하는 application은 공식 SDK인터페이스가 아닌 기능에는 접근하지 못하도록 제한한다.(공식홈페이지 참고) 왜 비 SDK를 제한하게 되었나? 안드로이드에서 @hide annotation으로 선언한 여러 sdk(android.xxx.xxx 같은 package)의 method들이 존재한다. @hide 구문을 사용하면 android내부에서만 접근 가능하고, 외부(application)은 접근하지 못하며 공식 패키지 색인에도 노출되지 않는다. 즉, 공식적으로 application단에서 사용이 불가하도록 선언해 놓은것이다. 그러나, 많은 전세계의 개발자들..

Kotlin 소개 및 Java와의 차이점 알아보기

What is Kotlin?# JetBrains에서 2011년 공개한 프로그래밍 언어# Java와 상호 호환 # JVM, Android, 브라우저에서 동작# coroutines 지원# Null 안정성 # 코틀린 공식 사이트 : https://kotlinlang.org/# 코틀린 온라인 공부 사이트 : https://play.kotlinlang.org Android와 Kotlin의 관계# Java와 100%호환을 통해 Android API그대로 사용가능# Ant, Maven, Gradle build 시스템 사용가능# Android studio를 통한 Java → Kotlin 변환도구 제공 Java vs Kotlinjava와 코틀린과 차이점을 정리해 보았다. 각 언어의 버젼별로, 상황별로 다른점이 많으나, ..

Custom listview의 각 item에 animation 적용하기

개요안드로이드 custom listview를 사용하면서 parent item view에 각종 animation effect를 주고 싶을때 사용 제공 애니메이션# Alpha with translate animation : 좌측으로 이동 + 투명도가 변하면서 스르륵 나타나는 애니메이션# Alpha animation : 투명도가 변하면서 스르륵 나타나는 애니메이션# Scale animation : 점점 커지는 애니메이션 주요 코드ListViewAdapter.javacustom list view를 사용하기 위해 BaseAdapter를 상속받은 ListViewAdapter에서 parent view에 animation을 적용하면 각 item에 animation이 적용된다. @Override public View g..

안드로이드 HandlerThread 스레드 사용법

Android HandlerThread android HandlerThread는 Thread class를 상속하고 내부에서 Looper.preapare()과 Looper.loop()를 실행하는 Looper 쓰레드이다. HandlerThread는 UI와 관련없지만 단일스레드에서 순차적인 작업이 필요할 때 사용한다. Example) 상기와 같이 인스타그램에 좋아요 버튼이 있다. 좋아요 버튼을 누르면 실시간으로 DB에 반영된다고 가정하자. 개발자는 UI를 블로킹하지 않도록 별도 쓰레드에서 DB에 반영하도록 할 것이다. 사용자가 좋아요를 마구마구 바꾸기도 한다. 만약 좋아요 상태가 바뀔 때 마다 스레드를 생성(new instance and start)하거나 스레드가 스레드(get instance and star..

android targetsdkversion & minsdkversion

targetSdkVersion? minSdkVersion? maxSdkVersion?안드로이드에서 애플리케이션을 개발할 때 가장 기본적으로 설정해야 하는 manifest의 설정 인 uses-sdk에 대해 적어보고자 한다. 각각의 요소들의 값이 어떤 역할을 하는지 모르고 무작정 올리거나 내리는 경우가 많다.각 요소의 값에 따라 구동이 되는 단말의 개수가 현저하게 달라지므로, 이 요소들에 대해 자세히 알아보자. 구문123cs 포함된 위치 : android:minSdkVersion애플리케이션이 필요한 최소 API레벨을 지정하는 정수. Android 시스템이 시스템의 api레벨이 이 특성에 지정된 값보다 더 낮은 경우 사용자가 애플리케이션을 설치하는 것을 방지한다.(필수값) Example) 구분 애플리케이션 m..

[Effective Java]생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라.

규칙 2 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라. Builder pattern은 객체에서 생성자에 들어갈 파라미터가 많든 적든 차례차례 파라미터를 받아들이고 모든 파라미터를 받은 뒤에 이 변수들을 통합해서 한번에 사용을 할 수 있다. 사진. 고도화된 빌더패턴 안드로이드에서도 이 패턴을 유용하게 많이 사용했는데, 이게 어떻게 이루어지고 사용을 했는지 몰랐다. AlertDialog가 그 예이다. 아래는 AlertDialog의 예시이다. 안드로이드를 하다보면 이 패턴을 자주보게 된다. AlertDialog 뿐만아니라 Uri, Geofence 등등 해당 패턴을 많이 사용하고 있다는 것을 알 수 있었다. 기존에는 오버로딩(Overloading)을 활용하여 객체를 생성했으나 이는 어떤 파라미터..