안드로이드/개발 TIP: 70개의 글
MVVM (Model-View-ViewModel) 패턴은 비즈니스 로직과 사용자 인터페이스(UI)를 완전히 분리함으로써 쉬운 유지관리와 테스트를 진행할 수 있으며 기본적으로 모듈화를 진행하기 때문에 코드 재사용성도 뛰어납니다. 기존의 액티비티(Activity)에 비즈니스 로직과 UI 로직과 같은 복잡한 기능을 넣게 되면 액티비티가 무거워지고 종속성이 너무 강해 테스트가 힘들고 유지보수가 힘들어집니다. MVVM 패턴은 기본적으로 Model과 View 그리고 ViewModel과 같이 각자의 역할에 맡는 기능들을 모듈화하기 때문에 유지관리 및 테스트가 용이해집니다. 1. View View는 Activity나 Fragment 같은 화면에 표현되는 레이아웃을 정의합니다. View는 기본적으로 비즈니스 로직을 포함..
이번 포스팅에서는 안드로이드 스튜디오에서 제공하는 기본 폰트말고 커스텀 폰트(Custom Font)를 적용하는 방법에 대해 알아보겠습니다. 1. 폰트 다운로드 https://noonnu.cc/ 예제 구현을 위해 먼저 폰트를 다운받도록 합니다. 위 사이트로 접속을 하게 되면 무료로 상업적 이용이 가능한 여러 폰트를 제공하고 있습니다. 여러가지 폰트를 제공하고 있으며 미리보기를 통해 폰트가 어떤식으로 적용되는지 확인 할 수 있습니다. 폰트명을 클릭하고 들어가보면 하단에 각 폰트에 대한 라이센스 관련 문구가 있습니다. 잘 확인해보시고 사용하시기 바랍니다. 상단 영역에 있는 다운로드 버튼을 통하여 폰트를 다운로드 해주세요. 2. 폰트 파일 추가하기 이제 다운받은 폰트를 여러분의 프로젝트에 추가해야 합니다. 경로..
프로젝트를 진행하면서 RecyclerView의 Data Set에 동적으로 아이템을 추가하여 notifyDataSetChanged() 함수를 통해 ReBinding을 시켜야하는 일이 있었습니다. 문제없이 실행되는가 싶더니 데이터가 추가 되고 RecyclerView에 반영이 되는 순간 View가 깜빡 거리는 현상이 생기더군요. 해당 포스팅에서 Adapter의 notifyDataSetChanged 실행 시 RecyclerView의 깜빡 거리는 현상을 해결하는 방법을 알아보겠습니다. 1. 깜빡거리는 원인 Adapter가 관리하는 Data Set에 데이터가 추가 / 삭제 / 갱신등이 이루어지면 notifyDataSetChanged()를 호출하여 Adapter에게 DataSet이 변경되었으니 갱신하라고 알려줘야 합..
플로팅 액션 버튼(Floating Action Button)은 화면에 떠있는 원형의 버튼으로 머터리얼 디자인에서 자주 사용되는 기본 위젯입니다. 플로팅 액션 버튼(Floating Action Button)을 구현하는 방법은 일반 버튼 위젯을 구현하는 방법과 비슷합니다. 다만 기본적으로 ImageView를 상속받는 위젯이기 때문에 버튼에 표현할 아이콘을 지정할 수 있으며 버튼을 클릭하였을 때 서브 버튼이 나열이 되도록 구현이 가능합니다. 물론 일반 버튼처럼 사용자가 발생한 클릭 이벤트에 대한 처리도 가능합니다. 1. 화면에 FloatingActionButton 사용법 1.1 xml 레이아웃 리소스 추가 FAB 위젯을 레이아웃에 추가하는 방법은 일반 위젯들을 추가시키는 방법과 동일합니다. FAB에서 사용되는..
안드로이드의 Switch 위젯은 두 가지 옵션 중 하나를 선택할 수 있는 두 개의 상태 Toggle Switch입니다. 사용자는 두 가지 옵션 중 하나를 선택하기 위해 간단한 터치 동작이나 thumb을 앞 뒤로 드래그하여 선택할 수 있습니다. 1. Switch 주요 속성 속성명 설명 android : showText on/off (설정/해제) Text가 보일지 안보일지를 결정하는 속성. android : thumbTextPadding Switch Caption과 Thumb 사이의 간격 android : switchMinWidth 스위치의 너비 최소 크기 android : switchPadding Switch Caption과 스위치 사이의 간격 androiid : switchAppearance on/off..
RatingBar는 SeekBar와 ProgressBar의 확장 버전으로 별 모양을 통해 평점이나 점수 또는 등급을 매길 때 사용하는 뷰 위젯입니다. 1. RatingBar의 주요속성 4가지 속성 설명 android : isIndicator false 일때 사용자가 별표를 터치 또는 드래그를 통해 변경가능 android:numStars 화면에 표시되는 별의 개수 android:stepSize 평점 변경 단위 android:rating 최초 평점 ▼ Xml 레이아웃 리소스를 통해 RatingBar 한 개를 배치한 형태입니다. isIndicator 속성값은 default로 false이기 때문에 사용자와의 터치 또는 드래그와 같은 상호작용을 통해 별 점수를 변경하는 것이 가능합니다. 또한 stepSize가 3..
안드로이드 앱에서 데이터를 저장할 때는 파일(File)이나 데이터베이스(Databaese)를 사용합니다. 하지만 비교적 소규모의 키(Key) - 값(Value)의 자료구조의 데이터는 SharedPreferences API를 사용하여 데이터를 저장합니다. SharedPreferences 사용하여 저장되는 데이터는 파일 형식으로 저장이 되며 앱이 삭제되기 전까지 보존이 됩니다. 데이터베이스를 사용하는 것처럼 key-value 쌍의 데이터를 저장하고 불러오고 삭제가 가능합니다. SharedPreferences에는 수치 값이나 간단한 텍스트 또는 자동 로그인 여부와 같은 간단한 사용자 설정값들을 저장하는 용도로 사용됩니다. 저장 가능한 데이터 타입으로는 boolean, int, float, long, Strin..
ViewPager는 데이터를 페이지 단위로 표시하고 화면을 쓸어 넘기는 동작인 스와이프(Swipe)를 통해 페이지 전환을 할 수 있는 컨테이너(Container)입니다. 자체적으로 그리는 기능이 있지 않고 위젯을 배치하여 ViewPager의 각 페이지를 구성합니다. 1. 메인 UI 레이아웃 리소스에 ViewPager 추가 2. ViewPager 페이지 구성을 위한 레이아웃 리소스 ▼ ViewPager에서 컨텐츠를 표현하기 위한 각 페이지의 UI 구성을 위한 레이아웃 리소스입니다. 상단에 LinearLayout을 배치하고 그 아래에 ImageView를 배치하여 ViewPager의 각 페이지에 이미지를 표현하도록 구현하였습니다. 3. Adapter 구현 ViewPager도 결국 RecyclerView와 같이..
json은 JavaScript Object Notation의 약자로 데이터를 구조적으로 표현하기 위한 일종의 포맷(Format)으로 네트워크를 통해 데이터를 주고받을 때 사용되는 경량의 데이터 형식을 의미합니다. 안드로이드에서 Json을 파싱 하기 이전에 먼저 json이 어떤 형식의 데이터 포맷인지 알아보고 가겠습니다. 1. json 기본 개념 { "Movies" : [ { "title" : "미션임파서블", "grade" : "15세 관람가", "category" : "액션" }, { "title" : "어벤져스", "grade" : "12세 관람가", "category" : "액션" }, { "title" : "범죄도시", "grade" : "19세 관람가", "category" : "범죄/스릴러" ..
1. CountDownTimer를 활용한 타이머(Timer) 구현 1.1 화면 UI를 위한 레이아웃 리소스 ▼ 타이머의 시간 경과를 표시하기 위한 TextView와 타이머 시작을 위한 Button 한 개와 타이머를 Reset 하기 위한 Button 한 개를 배치한 형태입니다. 포스팅 뒤에 나오는 Timer/TimerTask 구현예제도 동일한 레이아웃 리소스를 사용합니다. 1.2 CountDownTimer 상속받는 MyTimer 클래스 구현 class MyTimer extends CountDownTimer { public MyTimer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Over..