본문 바로가기

전체 글134

09-3 폰 크기의 호환성 안드로이드 폰은 크기가 다양해서 개발자에게는 크기가 다양한 기기와 호환하는 화면을 만드는 것이 중요한 과제이다. 폰 크기와 호환성은 안드로이드 시스템에서 도와주는 부분이 있고 개발자가 직접 코드에서 해결해야 하는 부분이 있다. 우선 안드로이드 시스템에서는 기기의 크기를 어떻게 판단하는지 살펴보자. 논리적인 단위 알아보기 안드로이드 시스템은 기기의 크기를 ldpi, mdpi, hdpi, xhdpi, xxhpi, xxxhdpi로 구분한다. 여기서 dpi는 dots per inch의 줄임말로 1인치 안에 있는 도트의 개수를 의미한다. 안드로이드 시스템은 기기의 크기를 구분하여 콘텐츠의 크기를 늘리거나 줄여서 그에 맞게 나올 수 있도록 돕는다. 그런데 그러려면 개발자가 콘텐츠의 크기를 지정할 때 논리적인 단위를.. 2023. 6. 23.
09-2 리소스 조건 설정 리소스 조건 설정이란? 어떤 리소스를 특정 환경에서만 적용되도록 설정하는 것을 말한다. 왜 필요한가? 만약 기기에 앱을 설치하면 바탕화면에 앱을 실행하는 실행 아이콘이 나온다. 앱을 개발할 때 이 실행 아이콘에 해당하는 이미지를 리소스 디렉터리 mipmap에 준비한다. 그런데 만약 이미지를 하나만 준비했는데 기기마다 화면 크기가 달라지면 선명하게 나오지 않는 문제가 발생한다. 그러므로 개발자는 아이콘이 선명하게 나오게 하기 위해 이미지를 기기에 맞는 크기로 여러 장 준비한다. 보통 5장 정도. 그런데 문제는 이미지를 어느 기기의 크기에 적용하는지를 어떻게 결정할 것인가이다. 이 작업을 코드에서도 할 수 있지만 프로그램이 복잡해지고 리소스를 사용하는 목적과도 맞지 않는다. 이때 리소스 조건을 이용한다. 즉.. 2023. 6. 23.
09-1 리소스의 종류와 특징 안드로이드 프로그래밍은 리소스를 많이 이용한다는 특징이 있다. 9장에서는 리소스의 종류와 활용 조건을 어떻게 명시하는지, 기기의 크기와 호환하는 앱을 개발하려면 어떤 부분을 신경 써야 하는지에 초점을 맞춰 학습해야 한다. 안드로이드 앱 개발에서 리소스(resource)란 정적인 자원이라고 할 수 있다. 변경되지 않는 정적인 콘텐츠는 코드에 작성하지 않고 리소스로 분리해서 외부 파일로 만들어 코드를 좀 더 간결하게 작성하고 프로그램의 유지,보수를 용이하게 할 수 있다. 앱에서 이용하는 리소스는 크게 앱 리소스와 플랫폼 리소스로 구분된다. 차례대로 알아보자. 앱 리소스 활용하기 앱 리소스란 개발자가 직접 추가한 리소스를 의미한다. 앱을 개발하기 위해 모듈을 만들면 자동으로 res라는 디렉터리가 생기고 그 아.. 2023. 6. 23.
08-2 뷰 이벤트 액티비티의 화면은 TextView, EditText, ImageView, Button 등의 뷰로 화면을 구성하고 구현한다. 이런 뷰를 사용자가 터치했을 때 이벤트 처리는 앞에서 살펴본 터치 이벤트를 이용하지 않는다. 각 뷰에서 이벤트를 별도로 제공한다. ❓뷰의 이벤트도 결국 터치 아닌가요? 왜 터치 이벤트로 처리하지 않고 뷰에서 별도로 이벤트를 제공하죠? ❗️한 화면에 뷰가 많으면 뭘 터치했는지 좌표값을 알아야 한다(체크박스인지 버튼인지 등). 그래서 뷰가 많을 때는 프로그래밍이 복잡해진다. 그 대신 각 뷰가 제공하는 별도의 이벤트, 예를들어 버튼은 ClickEvent, 체크박스는 CheckdChangeEvent, 리스트는 ItemClickEvent로 처리하면 더 간단하고 명료해진다. 따라서 대부분의 뷰.. 2023. 6. 23.
08-1 터치와 키 이벤트 터치 이벤트 앱의 화면에서 발생하는 사용자 이벤트는 터치(touch)이다. 터치란 손가락으로 화면을 잠시 눌렀다가 떼는 행위를 말한다. 앱은 사용자의 터치를 인식하고 화면을 손가락으로 눌렀는지, 떼었는지, 스와이프(swipe, 화면에 손가락을 댄 상태로 쓸어넘기는 동작)했는지 따라 알맞게 동작하도록 구현한다. 이처럼 앱의 화면에서 발생하는 사용자의 터치 이벤트를 처리하고 싶다면 액티비티 클래스에 터치 이벤트의 콜백 함수인 onTouchEvent()를 선언하면 된다. ✅콜백함수란? 어떤 이벤트가 발생하거나 시점에 도달했을 때 자동으로 호출하는 함수. // 터치 이벤트 처리 class MainActivity : AppCompatActivity() { // 액티비티 클래스에 (...생략...) override.. 2023. 6. 22.
07-5 계층 구조로 배치 - ConstraintLayout ConstraintLayout은 안드로이드 플랫폼이 아니라 androidx에서 제공하는 라이브러리이다. 이를 이용하는 방법은 다음과 같다. 먼저 build.gradle 파일의 dependencies에 다음처럼 implementation을 선언해야 한다.(실제로는 자동으로 추가된다.) // constraintlayout 사용을 위한 빌드 설정 implementation 'androidx.constraintlayout:constraintlayout:2.1.1' 또한 프로젝트를 만들때 자동으로 만들어지는 레이아웃 XML 파일을 보면 기본 레이아웃이 ConstraintLayout으로 설정된다. 물론 수정할 수 있다. 카카오톡 화면을 만들어보자 레이아웃 편집기에서 레이아웃 구성하기 ConstraintLayout은.. 2023. 6. 20.