본문 바로가기

분류 전체보기117

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.
Service의 기본적인 사용법 Service란? 그동안 다루었던 Activity와 다르게 Service는 화면에 보이지 않는다. Service는 Activity와 같이 안드로이드의 컴포넌트이기 때문에 onCreate(), onDestroy() 메소드를 갖고 있다. 그리고 사용할 때 주의할 점으로는 종료 시에 시스템이 자동으로 재시작 시켜주기 때문에 조심해야 한다. 사용법 추가하는 방법은 Activity와 비슷하다. Project Explorer에서 app을 오른쪽 클릭한 뒤 new - Service - Service 를 클릭하여 생성할 수 있다. Service의 이름을 지정한 뒤 Finish를 눌러주면 자동으로 클래스 뿐만 아니라 Manifest에 등록된다. package com.juhy.myapplication; import and.. 2020. 4. 3.
Activity Lifecycle(수명주기)란? Activity 수명주기란? 앱을 사용하다 보면 화면 위에 다른 화면이 생길수도 있고 일부만 가려질 수도 있는 등 여러 가지 상태 변화가 생긴다. 안드로이드에서는 이와 같은 상태에 따라 Activity가 화면에 보이고 실행될 경우 Running, Activity가 아직 보이긴 하지만 다른 것이 위에서 일부를 가릴 경우 Paused, Activity가 완전히 가려져 보이지 않을 경우 Stopped 로 나누어 Activity의 상태를 정의하고 있다. 그런데 앱을 만들다 보면 Activity가 현재 보이고 있는지 아닌지 판단이 필요할 때가 있다. 예를 들어서 게임을 하다가도 전화가 오면 게임이 일시정지되도록 해야 할 것이다. 이를 도와주기 위해 안드로이드는 Activity의 상태가 바뀔 때마다 자동으로 호출되.. 2020. 4. 3.
Intent를 이용한 Activity 간 데이터 전달 Intent는 기본적으로 컴포넌트 간 이동을 도와준다. 이 때 단순한 이동 뿐 아니라 Extra 데이터를 담을 수 있는 공간을 갖고 있어 데이터 전달이 가능하다. 저장된 데이터들은 (key, value) 형태로 저장되어 key 값을 통해 저장하고 불러올 수 있다. Primitive Type Data 기본적인 자료형인 String, int, boolean 값의 extra 데이터는 각각의 함수를 지원해준다. 데이터를 저장할 때는 putExtra() 함수를 사용하고(매개변수에 따라 알아서 처리) 불러올 때는 불러올 데이터의 자료형에 따라 알맞은 get 함수를 사용하면 된다. (Intent는 Activity 내에서 getIntent() 함수를 통해 불러올 수 있다) 실제로 Activity 간 String 데이터.. 2020. 4. 3.
Intent의 Flag 사용법 Activity Stack 안드로이드 앱에서는 새로운 액티비티가 실행될 때마다 기존에 사용하던 액티비티는 스택에 쌓이게 된다. 이를 Activity Stack이라고 하며 현재 액티비티가 종료되면 스택의 맨 위에 놓여져 있는 액티비티가 나타나게 된다. 하지만 이렇게 액티비티가 쌓이는 과정에서 우리가 의도하지 않은 결과가 나타날 수 있다. 이 때 Intent의 Flag를 통해 어떻게 해결할 수 있는지 알아보자. Intent Flag 사용법 Intent intent = new Intent(getApplicationContext(), NewActivity.class); // 플래그 지정 intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); // 플래그 추가 intent.add.. 2020. 4. 2.
Intent란? Intent란? Intent는 컴포넌트 간의 통신을 위해 만들어진 메신저이다. 이 때 Intent의 목적지를 정확하게 지정해 줄 경우 이를 명시적 Intent라고 한다. 그렇다면 목적지가 없이 이동할 수도 있다는 건데 그건 무슨 뜻일까? 예를 들어 위와 같은 특정 action을 지정하여 Intent를 사용할 수도 있는데 이를 암시적 Intent라고 한다. 암시적 Intent는 지정된 action을 수행할 수 있는 앱을 찾아 알아서 이동하게 된다. 명시적 Intent 사용법 명시적 Intent는 Intent 객체를 생성하여 목적지를 설정해준 뒤 startActivity() 함수를 통해 이동 가능하다. 자세한 내용은 Activity를 설명하는 글에서 앞서 다루었으니 참고하자. https://ju-hy.tis.. 2020. 3. 31.