본문 바로가기

분류 전체보기134

섹션 2. 트와이스 앱 만들기 오늘 배울 것: 스플래시 화면 만들기, 사진 테두리 둥글게 하기, 액티비티 하나로 여러 이미지 뷰 보이게 하기 1. 메인액티비티보다 스플래시 액티비티가 먼저 나오도록 하려면? 스플래시용 액티비티를 새로 만들고, 매니페스트 파일 가서 메인액티비티의 인텐트 필터 부분을 잘라서 스플래시 액티비티의 태그 안에 붙여넣기 2. 스플래시 화면이 뜨는 데에는 성공. 근데 이제 메인 액티비티로 넘어가려면? 스플래시 액티비티에서 코드로 구현해야 함. 핸들러 2023. 8. 11.
섹션 1. BTS 앱 만들기 코드만 따라치는 게 아니라 구조와 각 행동의 목적을 이해하기 1. 실행은 되는데 사용자 이벤트를 처리하려고 하는 순간 앱이 종료된다. error: This intent has no action set and is not explicit by component.You should either make this intent explicit by component or set an action matching the targeted intent filter. 인텐트를 앞으로는 명시적으로만 써야한단 얘긴가? https://stackoverflow.com/questions/76854269/i-get-this-error-when-trying-to-start-another-activity-this-intent-has.. 2023. 8. 11.
10-6 카카오톡 알림 만들기(실습) 실제 카카오톡은 앱 화면에 알림을 띄우지만 여기선 앱 화면에서 버튼을 클릭하는 순간 알림을 띄울 것이다. 데이터도 가상으로 처리할 것이다. 알림에 답장 기능을 추가할 것이며 답장에 입력한 내용은 로그로 출력하겠다. 내가 겪은 오류들 1. remoteInput 임포트 문제 메인액티비티의 임포트 구문에서 import android.app.RemoteInput 을 import androidx.core.app.RemoteInput으로 바꿔줬다. remoteinput을 모듈이름 우클릭하고 검색하면 된다. 2. permission denied 왜지? 왜 안될까... 왜... 매니페스트에도 퍼미션 다 넣었는데..? 해결방법 내가 쓰는 핸드폰하고 똑같다고 생각하면 된다 사용자가 설정 가서 알림을 허용해야 한다! 사용자.. 2023. 8. 4.
09-4 메신저 앱의 인트로 화면 만들기(실습) 이제 오류없이도 화면 회전 잘돼서 넘 조코~ 오늘 상단바를 처음 내려봤다 실제 폰이랑 유사하게 작동한다는 걸 실감했다 상단바를 내리고 한 번 더 내리면 자동회전 켜는 버튼이 있었다. 폰으로는 맨날 쓰는 기능인데 가상기기로 해보려니 아직 어색하고 신기하다 오늘은 화면회전했을 때의 액티비티를 따로 작성하는 법과 언어 리소스파일을 따로 작성하는 법을 배웠다. 모두 리소스 관련이다. 레이아웃 파일 속성 복습 margin은 두 요소 바깥쪽의 간격을 나타내는 속성이며, padding은 요소의 border와 content 사이를 나눠주는 즉, 요소 내부의 간격을 나타낸다. margin과 padding 모두 고정적인 단위와 상대적인 단위를 사용할 수 있다. padding="20dp" layout_centerHorizo.. 2023. 8. 4.
08-3 시계 앱의 스톱워치 기능 만들기(실습) 뷰 바인딩 기법 복습 레이아웃 XML 파일에 선언한 뷰 객체를 코드에서 쉽게 이용하는 방법! 레이아웃 XML 파일에 등록한 뷰는 findViewId() 함수로 얻어서 사용해야 하는데 이것은 상당히 귀찮은 방법이다. 뷰 바인딩 기법으로 쉽게 객체를 이용할 수 있다. build.gradle 파일의 android 영역에 buildFeatures를 선언하고 buildFeatures { viewBinding = true } 처럼 뷰 바인딩 기법을 사용하겠다고 선언하면 레이아웃 XML 파일에 등록된 뷰 객체를 포함하는 클래스가 자동으로 만들어진다! 즉, 우리가 직접 코드에서 뷰를 선언하고 findViewById() 함수를 호출하지 않아도 이를 구현한 클래스가 자동으로 만들어지므로 이 클래스를 이용해 뷰를 사용하기만.. 2023. 8. 2.
07-6 전화 앱의 키패드 화면 만들기(실습) 7장에서는 뷰를 배치하는 레이아웃을 살펴보았다. 화면을 단순하게 만들고 이벤트 처리는 안할 것이다. 두번째 실습은 스무스하게~ 책에서 dp 쓰였는데 프로그램이 자꾸 그거 쓰지 말고 sp 쓰란다 이유는 모르겠다 뷰의 간격 설정 뷰의 간격은 margin과 padding 속성으로 설정한다. margin 속성은 뷰와 뷰 사이 간격이고 padding 속성은 뷰의 콘텐츠와 테두리 사이의 간격이다. margin, padding 속성을 이용하면 간격이 네 방향 모두 같은 크기로 설정된다. 만약 특정한 한 방향의 간격만 설정하고 싶다면 paddingLeft, paddingRight, paddingTop, paddingBottom와 layout_marginLeft, layout_marginRight, layout_marg.. 2023. 8. 2.
06-5 카카오톡 비밀번호 확인 화면 만들기(실습) 지금까지 뷰를 이용해 화면을 구성하는 방법을 살펴보았따. 실습으로 간단한 화면을 만들어보고 장을 마치도록 한다. 화면만 구현하고 이벤트는 처리하지 않을 것이다. 그냥 최신개정판 샀어야 햇나 ㅎㅎ^^ 2022년 4월 29일 개정됐다는데 1년사이에도 참 힘들구나 (초록선은 왜생긴지 모르겠음) 내가 겪은 오류와 시행착오를 기록하겠다. 1️⃣ 책에서 레이아웃 파일 작성을 위해 activity_main.xml파일을 열라는데 존재하지 않으면? 액티비티를 새로 만들면 된다. https://www.masterqna.com/android/103404/activity_main-xml-없음 activity_main.xml 파일을 열라는데 없으면? 만들어진 적이 없으면? Android 2022.2 switched from t.. 2023. 8. 2.
21-4 파이어베이스 클라우드 메시징 클라우드 메시징의 원리 파이어베이스 클라우드 메시징(Firebase cloud messagind, FCM)은 서버에서 특정 상항이나 데이터가 발생할 때 앱에 알림을 전달하는 기능이다. 예를 들어 은행 계좌에서 이체가 발생할 때를 가정해 보자. 계좌 이체는 서버에서 발생하므로 사용자 폰에 설치된 앱에 이 소식을 알려줘야 한다. 이처럼 서버에서 어떤 상황이 발생할 때 클라이언트(앱)에 데이터를 전달하는 것을 서버 푸시(server push)라고 한다. 서버에서 어떤 데이터를 앱에 전달하려면 네트워크로 연결해야 한다. 그런데 서버에서 데이터가 언제 넘어올지 알 수 없으므로 앱에서는 서비스 컴포넌트로 네트워크에 계속 연결돼야 한다. 문제는 백그라운드 제약 때문에 앱이 포그라운드 상황이 아니라면 서버와 연결을 지.. 2023. 7. 15.
21-2 파이어베이스 스토리지 파이어베이스 스토리지는 앱의 파일을 저장하는 기능을 제공한다. 스토리지를 이용하면 사용자가 앱에서 사진을 선택하고 서버에 올린 후 다시 특정 시점에 내려받을 수 있도록 할 수 있다. 파이어베이스 스토리지를 이용하는 방법을 살펴보자 스토리지 사용 설정 스토리지를 이용하려면 파이어베이스 콘솔에서 스토리지를 시작해야 한다. 스토리지를 시작하는 방법은 21-3절에서 자세하게 살펴보고 여기서는 안드로이드 앱에서 스토리지를 사용하는 방법을 알아보자. 파이어베이스 콘솔에서 스토리지를 시작했으면 다음처럼 앱의 빌드 그래들 파일에 라이브러리를 등록한다. // 스토리지 라이브러리 등록 dependencies { implementation 'com.google.firebase:firebase-storage-ktx' } 파일.. 2023. 7. 15.
21-1 파이어스토어 데이터베이스 이번 장에서는 파이어스토어 데이터베이스와 스토리지에 데이터나 파일을 저장하고 불러오는 방법을 살펴볼 것이다. 그리고 앱 사용자에게 알림을 보낼 수 있는 클라우드 메시징 기능도 살펴볼 것이다. 참고로 이번 장의 내용은 이전 장에서 이어지므로 반드시 20장의 실습까지 모두 마친 후에 학습하기 바란다. 파이어베이스는 파이어스토어 데이터베이스(Firestore Database)와 실시간 데이터베이스(Realtime Database) 이렇게 2가지 클라우드를 기반으로 한 데이터베이스를 제공한다. 실시간 데이터베이스는 여러 클라이언트에서 상태를 실시간으로 동기화해야 하는 모바일 앱을 만드는 솔루션이다. 그리고 파이어스토어 데이터베이스는 실시간 데이터베이스보다 더 많고 빠른 쿼리를 제공한다. 이 책에서는 더 최신인 .. 2023. 7. 14.