본문 바로가기

Android/Concepts51

Thread와 Handler 사용법 Thread와 Handler란? 앱을 구현할 때 하나의 기능이 실행되는 중 다른 기능이 동시에 실행되어야 할 때가 있다. 예를 들어 우리가 게임을 하는 동안에 동시에 채팅도 할 수 있게 구현하고 싶다면 Thread를 사용하면 된다. Thread를 사용하면 현재 실행되고 있는 코드와 별도로 시스템에서 자원을 할당하여 동시에 실행시켜 준다. 프로젝트를 생성하면 Main Thread 하나로 작동하며, 여기에 다른 Thread를 추가하여 사용할 수 있다. 동시에 여러 기능을 수행한다면 Service를 사용하면 되지 않을까 라고 생각할 수 있다. 여러 차이가 있지만 Service는 UI가 없이 동작하는 반면, Thread는 UI에 접근하여 수정하는 것이 가능하다. 이 때 여러 가지 Thread가 동시에 UI에 접.. 2020. 4. 23.
Navigation Drawer Activity 살펴보기 NavigationDrawer란? 앱을 사용하다보면 막대기 세개 모양을 클릭하면 좌측이나 우측에 메뉴 목록이 나타나는 앱이 있다. 이 화면을 바로가기 메뉴 화면이라고 하며, 안드로이드에서는 NavigationDrawer라는 이름으로 제공하고 있다. 기본적으로 DrawerLayout 내부에 NavigationView를 추가하여 구현한다. NavigationView는 단어처럼 사용자가 원하는 destination(fragment)까지 navigate하는 역할을 한다. NavigationView의 메뉴 부분의 item을 클릭하면 activity의 fragment를 전환하여 원하는 화면으로 이동시켜준다. 그리고 이 부분 화면을 fragment로 구성하기 때문에 코드 구성을 잘 모르겠다면 fragment 글을 참.. 2020. 4. 17.
ViewPager에 TitleStrip/TabStrip 추가하기 TitleStrip이란? ViewPager를 사용하면 좌우 스크롤 만으로 fragment들을 바꿔줄 수 있어 편리하다. 하지만 사용하다보면 현재 표시되는 fragment가 전체 fragment 중 어떤 것인지 알기 어려울 때가 있다. 이 때 TitleStrip을 이용하면 전체 fragment의 개수와 현재 표시되는 fragment의 번호를 표시해 줄 수 있다. TitleStrip 사용법 먼저 ViewPager를 구현해야 하는데 이 글에서는 앞선 'ViewPager 사용법' 글의 코드를 사용하였다. https://ju-hy.tistory.com/55 ViewPager 사용법 ViewPager란? ViewPager는 좌우 스크롤을 통해 화면을 넘겨볼 수 있는 기능을 제공해준다. 부분 화면 여러 개를 변환하여.. 2020. 4. 14.
ViewPager 사용법 ViewPager란? ViewPager는 좌우 스크롤을 통해 화면을 넘겨볼 수 있는 기능을 제공해준다. 부분 화면 여러 개를 변환하여 보여주기 때문에 Fragment를 사용하여 구현하며, 여러 개 중 하나를 선택하는 형태의 위젯이므로 리스트뷰와 같이 어댑터를 사용하여 데이터를 분배해 주어야 한다. 사용법 package com.juhy.myapplication; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; imp.. 2020. 4. 14.
TabLayout 사용법 TabLayout의 구성 Tab은 크게 Tab 버튼이 위치한 TabLayout과 화면이 바뀌는 아래쪽의 FrameLayout으로 구성된다. Tab 버튼을 눌렀을 때 아래쪽 부분화면이 바뀌어야 하므로 주로 FrameLayout 안에 Fragment를 넣어 구현한다. 사용법 일단 TabLayout을 사용하려면 외부 라이브러리를 dependency에 추가해주어야 한다. 먼저 Project Explorer에서 Gradle Scripts - build.gradle(Module: app)을 클릭해 들어간다. 그리고 dependencies 괄호 안에 다음을 추가한다. // ~ API 28 implementation 'com.android.support:design:27.1.0' // API 29 ~ implement.. 2020. 4. 14.
ActionBar에 Menu 추가하기 ActionBar와 Menu란? 앱을 켜보면 앱 상단에 bar 형태와 앱의 이름이 보이는 앱이 있다. 이 상단 bar를 ActionBar라고 부르며, 이 안에 버튼을 추가하여 Menu를 구성할 수 있다. Menu는 Option Menu와 Context Menu로 나누어진다. Option Menu는 하드웨어 메뉴 버튼을 눌렀을때 나타나는 메뉴이고, Context Menu는 화면을 길게 눌렀을 때 나타나는 메뉴이다. Menu 추가하기 먼저 res 폴더를 오른쪽 클릭하여 New - Directory를 선택해 새 폴더를 만들어주자. 이 때 새 폴더 이름은 menu로 지정해주어야 한다. (폴더의 이름에 따라 안에서 동작할 수 있는 파일의 종류가 설정됨) menu 폴더가 만들어졌다면 오른쪽 클릭하여 New - Me.. 2020. 4. 13.
Fragment 사용법 Fragment란? 앱을 개발하다 보면 하나의 액티비티 안에 부분적인 화면을 추가하고 싶을 때가 있다. 특히 액티비티 안에 여러 부분 화면이 전환되게 만들 때 이를 액티비티로 구현하면 앱이 무거워지고 복잡해진다. 그리고 하나의 똑같은 화면을 여러 액티비티에서 사용하고 싶은데 액티비티마다 모두 구현하는 것은 비효율적이다. 이를 해결하기 위해 부분 화면을 독립적으로 분리되어 사용할 수 있게 만들어 놓은 것이 Fragment이다. Fragment의 특징 Fragment는 기본적으로 액티비티를 본따 만들었기 때문에 비슷한 구조와 특징을 갖고 있다. 액티비티 간 이동은 시스템에서 Intent를 통해 이동하듯이, Fragment는 Fragment Manager를 통해 이동한다. 이 때 Fragment는 Activi.. 2020. 4. 9.
Permission 획득하기 일반 권한과 위험 권한 기본적으로 특정 권한을 획득하기 위해서는 Manifest에 요청할 권한을 추가하기만 하면 된다. 예전에는 이런 권한들을 앱 설치 수락 과정에서 모두 획득이 가능했는데, 사용자들로부터 위험한 권한들을 너무 쉽게 획득한다고 판단되어 Marshmallow(API 23) 버전 이후로 분리되었다. 일반 권한들은 기존처럼 앱 설치 시에 보여주어 수락 시에 획득이 가능하게 되고, 위험 권한들은 앱 설치 시 뿐만 아니라 앱 실행 후에 한번 더 동의를 얻어야 획득이 가능하다. 따라서 위에 표시된 위험 권한들은 앱 실행 후 동의를 얻어야 사용이 가능하다. 위험 권한 획득 방법 SMS 수신 권한 획득 과정을 구현해보자. package com.juhy.myapplication; import androi.. 2020. 4. 4.
Broadcast Receiver를 이용한 SMS 수신 Broadcast Receiver(방송수신자)란? 안드로이드 시스템에서는 전화가 오거나 문자메시지가 오는 등 특정 상황에서 방송을 내보낸다. 이런 시스템에서 방송을 해주는 이벤트들을 Global Event라고 하며, 이를 앱에서 받아 처리하려면 Broadcast Receiver에 등록해주어야 한다. Broadcast Receiver에 등록된 종류의 방송이 오면 이를 수신해 intent를 통해 전달받게 된다. 또한 시스템의 방송을 수신하는 것 뿐만 아니라 앱에서 방송을 보낼 수도 있다. 기본적인 사용법 생성은 마찬가지로 Project Explorer에서 app 우클릭 후 New - Other - Broadcast Receiver를 클릭하면 된다. 클래스 이름을 설정해주고 Finish를 눌러주면 자동으로 클.. 2020. 4. 4.