안드로이드/개발 TIP: 70개의 글
안드로이드의 프로그레스 바(ProgressBar)는 애플리케이션 안에서 특정 작업을 수행 중일 때 사용자에게 작업이 정상적으로 진행되고 있음을 시각적으로 표현할 때 사용되는 뷰(View)입니다. 안드로이드의 ProgressBar는 작업 종류에 따라 두 가지 Style을 지원하는데 첫 번째는 style="? android:attr/progressBarStyleHorizontal" 형태로 앱이 작업을 수행하고 있을 때 작업 진행 정도를 수치값으로 표현할 수 있고 작업 완료 시점을 예상할 수 있을 때 사용하는 Style입니다. 두 번째 Style은 style="? android:attr/progressBarStyle" 형태로 앱이 작업을 수행하는데 있어 완료 시점을 명확하게 알 수 없고 수치 값으로 진행상태를..
AsyncTask 클래스는 안드로이드에서 요구하는 메인 스레드(Main Thread)와 작업 스레드의 분리 구조를 보다 쉽게 구현하도록 도와주는 추상 클래스입니다. 1. AsyncTask 주요 재정의 함수 안드로이드의 AsyncTask 생명주기 관리는 다섯 가지의 생명주기 함수들을 재정의함으로써 관리할 수 있습니다. AsyncTask 재정의 함수 doInBackground() 함수를 제외한 나머지 4개의 함수는 전부 Main Thread에서 실행되는 함수들입니다. AsyncTask를 실행하면 가장 먼저 onPreExecute() 함수가 호출되며 doInBackground() 함수가 호출되기 직전에 호출됩니다. 일반적으로 해당 함수에서는 사용자 UI에 ProgressBar를 표시하여 본격적인 작업 스레드에..
특정 액티비티(Activity)를 실행하고 해당 액티비티의 실행 결과를 받아와 처리를 해야 하는 경우가 있습니다. 간단하게 주소록 액티비티를 생각해보면 됩니다. 주소록은 연락처 목록이 나오고 새로운 연락처를 추가하기 위해서는 연락처 추가 액티비티를 실행하게 됩니다. 해당 액티비티에서 데이터를 입력하고 추가를 클릭하면 연락처 추가 액티비티는 종료되고 연락처 목록에는 추가했던 연락처가 갱신됩니다. 이때 연락처 추가 액티비티에서 추가했던 데이터를 목록에 갱신하기 위해서는 해당 액티비티로부터 입력했던 데이터를 가져와야 합니다. 1. 액티비티로부터 데이터 가져오기 위한 프로세스 ▼ 액티비티(Activity)를 실행할 때 startActivity() 함수를 호출하였습니다. 하지만 액티비티로부터 결과를 얻어오기 위해..
앞서 포스팅에서는 프리미티브 타입의 일반적인 자료형의 변수를 다른 액티비티에 전달하는 방법을 살펴보았습니다. 만약 아래와 같이 클래스 안에 정의된 프리미티브 타입의 변수들이 정의되어 있는 객체를 전달할 때는 어떻게 해야 할까요? public class Person{ private String name; private int age; public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public String getName() { return this.name; } public int getAge() { return this.age; } } ▼ Person 클래스는 멤버 변수..
안드로이드에서는 빛의 3요소인 R(빨강) G(초록) B(파랑)로 구성된 색상 리소스 값을 추가하여 사용할 수 있습니다. RGB의 각각의 색상에 해당하는 값을 0~255까지 16진수로 표현한 값을 사용하며 다음과 같은 색상 표현 형식을 사용할 수 있습니다. 1. 색상(Color) 표현 방식 ▼ #으로 시작하며 RGB에 해당하는 각 색상을 0~15까지 16진수로 표현된 값으로 표현합니다. 예를 들어 빨강을 표현하고 싶다면 #F00 같이 사용하면됩니다. ▼ 위 형식에서 마찬가지로 각 색상값이 0~15까지의 16진수 값을 가지는데 투명도 값이 추가된 형태입니다. 투명도도 0~15까지 16진수 값을 가지며 수치가 커질수록 불투명해집니다. ▼ 이 표현 방식은 0~255까지 수치값으로 색상을 표현하기 때문에 더 다양..
저번 포스팅에서는 요소를 통해 단일 문자열 리소스를 추가하는 방법을 알아봤습니다. 이번 포스팅에서는 요소를 사용해 문자열 배열 리소스를 추가하는 방법을 살펴보겠습니다. 1. xml string 리소스 파일 추가 프로젝트를 생성하면 자동으로 생성되는 /res/values/string.xml 파일 안에 리소스를 추가를 해도 상관없지만 따로 xml 문자열 리소스 파일을 생성하여 추가하도록 하겠습니다. ▼ values 폴더를 우클릭하여 [New]-[values resource file]을 클릭합니다. 파일 이름을 mystring.xml로 지정하고 ok를 클릭하면 /values/ 경로에 mystring.xml 파일이 생성되는 것을 확인할 수 있습니다. 무궁화 장미 해바라기 ■ ~ - 안드로이드에서 리소스를 추가할..
만약 여러분들이 개발하는 앱이 한국시장을 넘어 외국시장도 노리고 있다면 앱은 다국어 지원이 가능해야 합니다. 다국어 지원이란 단말기에 설정된 국가 언어에 따라 해당 국가 언어로 문자열이 바뀌는 것을 의미합니다. 안드로이드에서 다국어를 지원하기 위해서는 문자열 리소스를 활용해야 합니다. 이번 포스팅에서는 간단하게 한국어와 영어를 동시에 지원하는 앱을 만들어보겠습니다. 1. 한국어 문자열 리소스 추가 먼저 한국어를 지원하기 위해서는 한국어 전용 문자열 리소스 폴더를 생성합니다. ▼ 먼저 /res/ 경로에 문자열 리소스 폴더를 생성해줍니다. res 폴더를 우 클릭하여 [New]-[Directory]를 클릭하고 폴더 이름을 지정해주고 OK버튼을 클릭합니다. ▼ 여기서 폴더명은 반드시 values-ko와 같이 v..
자바에서 익명 클래스(Anonymous Class)를 사용하는 방법에 대해 알아보겠습니다. interface Number { public void DisplayNumber(); } ▼ 여기 Number Interface 하나가 있습니다. Number Interface를 상속받아 구현하는 Class는 DisplayNumber() Method를 구현하도록 강제합니다. public class Display { private Number number; public Display(Number object) { this.number = object; } public void display() { this.number.DisplayNumber(); } } ▼ Display Class를 정의하였습니다. Display ..
앱에서 서버로 인증할때는 OAuth 2.0방법을 가장많이 사용하는데 이에 대한 설명은 아래의 링크를 참조해주세요. https://oauth.net/2/ OAuth 2.0에서는 JWT(Json Web Token)를 이용합니다. 이는 인증정보를 암호화하여 url형식으로 전달해 주는 토큰이라고 합니다. Token이라는 것은 만료시간이 있으며 만료된 Token은 더이상 사용하지 못합니다. 만약 만료된 Token으로 서버와 통신한다면 401 error를 만나게 됩니다. 따라서 만료된 access token은 refresh token으로 새로운 access token을 갱신받아 사용해야만 합니다. 그럼 안드로이드에서는 토큰 갱신을 어떻게 구현할까요? 바로 okhttp3를 통해 쉽게 구현할 수 있습니다. val bu..
앱에서 서버와 통신을 할 때 사용자의 인증이 필요한 경우가 있습니다. 이럴 경우에는 해더에 Authorization를 추가하여 인증된 사용자만 정보를 취득하도록 합니다. Authorization에도 BearerToken, ApiKey, OAuth2.0등 여러가지 종류가 있습니다. 그럼 어떻게 해더에 Authorization를 넣을까요? 제가 즐겨쓰는 retofit2와 okhttp3를 이용하여 알아보도록 할게요. 먼저 retorfit2의 custom header를 사용하여 추가하는 방법입니다. public interface ApiService { @Headers("Authorization: your auth token") @GET("/test") List getTestData(); } 또 다른 방법으로는 ..