Android

    DP? SP? DPI? PX?

    DP? SP? DPI? PX?

    스크린의 단위 안드로이드 개발하다 보면 dp와 sp를 자주 사용한다. 쓸 때는 그냥 화면의 단위이겠거니 하면서 썼는데 이번 기회에 제대로 알아보려 한다. PX(Pixel) '화소'라고도 하는데 화면을 구성하는 가장 기본이 되는 단위이다. Red, Green, Blue가 하나씩 모인 것을 픽셀이라 한다. 따라서 px로 설정한 화면의 크기는 절대적이며 디스플레이의 해상도가 크면 클수록 화면이 작게 보인다. 모바일 환경은 해상도가 제각각이므로 px단위는 사용하지 않는다. DPI(Dot Per Inch) 말 그대로 1 제곱인치에 만들어진 점이나 화소 수를 뜻한다. 프린터 출력물이나 디스플레이 해상도의 측정 단위이다. 쉽게 예를 들면 10 dpi는 1인치 너비에 10개의 점이 있다. 따라서 dpi의 값이 클수록 ..

    앱바 만들기

    앱바 만들기

    소개 안드로이드 공식문서 앱바 만들기 머테리얼 디자인 공식문서 앱바 필요에 따라 안 쓰기도 하지만 국밥 같은 앱 바입니다. 앱바, 툴바 두 가지로 불리는데 이유는 다음과 같습니다. android 3.0부터 기본 테마를 사용하는 모든 액티비티에 ActionBar가 기본으로 제공됩니다. 앱바의 기능은 다양한 Android 출시 및 기능 추가로 인해 어떤 버전의 Android 시스템을 사용함에 따라 네이티브 ActionBar가 다르게 동작합니다. 가장 최신 기능은 Toolbar지원 라이브러리 버전에 추가되고 있으므로 ToolBar클래스를 이용해서 앱바를 구현하변 됩니다. 사전 준비 테마 설정 매니페스트에서 테마를 NoActionBar테마 중 하나로 설정합니다. ActionBar테마를 사용하게 되면 네티이브Ac..

    파이어베이스로 구글 소셜로그인

    파이어베이스로 구글 소셜로그인

    오늘 해볼 것은 파이어베이스와 구글 클라우드 플랫폼을 이용한 구글 소셜로그인 구현입니다. 총 3단계로 진행할 예정 파이어 베이스 프로젝트 생성 구글 클라우드 플랫폼 프로젝트 생성 액티비티에서 소셜 로그인 구현 진행과정은 파이어베이스 문서의 Google 로그인을 참고하고 있습니다. 문서를 펼치고 준비가 됬다면 시작합니다. 프로젝트 만드는 법은 아래 게시글에 나와있습니다. Firebase 시작하기 Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.com 파이어베이스에 개인 프로젝트를 추가하는 방법에 대해 다뤄 huzit.tistory.com 구글 클라우드 플랫폼 프로젝트 생성 파이어베이스의 기본..

    Inflate

    Inflate

    Inflate란? 사전적 정의로 '부풀리다, 올리다'라는 의미를 가지고 있다. 그렇다면 무엇을 부풀린다는 걸까? 안드로이드에서 inflate는 xml에 표기된 레이아웃들을 메모리에 객체화시키는 행동이다. 쉽게 말해, xml코드들을 객체화해 소스코드에서 사용하기 위함이다. 기본적으로 안드로이드에서 화면(Activity 단위)을 만들면 소스코드, 레이아웃.xml 이렇게 2개가 생성된다. 이때 Activity에서 setContentView() 함수가 바로 xml을 객체화시키는 Inflate동작이다. class MainActivity : AppCompatActivity(){ override fun onCreate(savedInstanceState: Bundle?){ super.onCreate(savedInsta..

    뷰 바인딩(viewBInding)

    뷰 바인딩(viewBInding)

    소개말 안드로이드 프로젝트를 처음 생성해서 뷰에 데이터를 표현할 때 가장 많이 쓰는 함수는 "View.findViewById(id: Int)" 일 것입니다. 하지만 뷰에 쓰는 컴포넌트가 많아질수록 반복해서 호출해야 하고, 코드가 길어지는 문제를 야기합니다. 우리는 바인딩을 통해 이러한 문제를 해결해보려 합니다. 코틀린에선 findViewById를 쓰지 않고 컴포넌트의 id를 통해 바로 접근할 수 있었지만 androidStudio 4.1에서 kotlin-android-extensions 플러그인이 다양한 문제로 인해 기본적으로 제공되지 않으면서 id를 통해 접근할 수 없게 되었다. 1. 바인딩의 종류 바인딩에는 2가지 방법이 있습니다. 간단하게 뷰를 가져오기만 하는 뷰 바인딩, 바인딩 오브젝트를 통한 양방..

    Retrofit

    Retrofit

    소개 Retrofit2는 안드로이드 REST API 통신 라이브러리입니다. 통신 라이브러리 중 Volley와 함께 가장 많이 사용되는 라이브러리입니다. Retrofit을 사용한 이유는 성능과 간단한 구현, Type-Safe때문입니다. 소개는 여기까지 하고 바로 구현으로 들어가겠습니다. 구현 Retrofit을 사용하려면 세 가지 클래스가 필요합니다. JSON형태의 모델 클래스 HTTP 작업을 정의하는 (onSuccess/onFail) 인터페이스 Retrofit.Builder를 선언한 클래스(baseUrl과 Converter 등을 선언, Interceptor를 추가하여 응답을 가공할 수도 있다.) 1. Empty Activity생성. (API Level 30) 2. build.gradle 수정 Retrofi..

    RecyclerViewItemClickEvent

    RecyclerViewItemClickEvent

    1. 리사이클 러뷰(RecyclerView) 아이템 클릭 이전 글에선 리사이클러뷰를 기본 사용법과 예제를 살펴봤습니다. 이제 리사이클 러뷰 아이템 클릭 이벤트를 처리하는 방법을 알아보겠습니다. 리스트뷰를 써본 경험이 있다면 리스트뷰의 아이템 클릭을 setOnItemClickListener()를 통해 아이템 클릭 이벤트를 처리해보셨을 겁니다. 리사이클러뷰는 리스트뷰처럼 setOnItemClickListener()와 유사한 방법을 통해 아이템 클릭이벤트를 설정할 수 없습니다. 리사이클 러뷰에선 기본적으로 제공해주는 아이템 클릭 이벤트 메서드가 없습니다. 그렇다면 리사이클러뷰에서 아이템 클릭 이벤트를 처리하는 방법은 없는 걸까요? 2. 아이템 클릭 처리주체 리스트뷰는 유사한 형태와 크기의 아이템 뷰를 한 줄로..

    RecyclerView

    RecyclerView

    RecyclerView란? 1. 정의 안드로이드 공식문서에는 A flexible view for providing a limited window into a large data set.로 소개하고 있습니다. 번역하면 '대규모 데이터셋을 제한된 범위에 제공하기 위한 유연한 뷰'입니다. 조금 이해를 돕기 위해 설명을 덧붙이자면 사용자가 관리하는 데이터 셋을 아이템 단위로 구성하여 화면에 출력하는 뷰 그룹으로 제한된 화면에 제공하기 위해 스크롤 가능한 리스트로 표시해주는 위젯'이라 말할 수 있습니다. 이름으로 넘어가서 왜 리 사이클러 뷰(RecyclerView)라고 정했을까요? 그 이유는 리스트 뷰(ListView)와 다르게 매번 리스트 항목이 갱신될 때마다 기존에 사용했던 아이템 뷰를 재활용하기 때문입니다...