깡샘 코틀린69 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. 07-4 표 형태로 배치 - GridLayout GridLayout 배치 규칙 GridLayout은 행과 열로 구성된 테이블 화면을 만드는 레이아웃 클래스이다. LinearLayout처럼 orientation 속성으로 가로나 세로 방향으로 뷰를 나열하는데 LinearLayout과 다르게 줄바꿈을 자동으로 해준다. orientation: 방향 설정 rowCount: 세로로 나열할 뷰 개수 columnCout: 가로로 나열할 뷰 개수 GridLayout 역시 LinearLayout처럼 orientation 속성으로 방향을 설정하고 그 방향대로 뷰를 나열한다. 그런데 rowCount나 columnCount 속성에 설정한 개수만큼 뷰를 추가하면 자동으로 줄바꿈하여 그 다음 줄에 뷰를 출력한다. GridLayout에 orientation 속성을 가로로 지정하고.. 2023. 6. 20. 07-3 겹쳐서 배치 - FrameLayout FrameLayout이란? 뷰를 겹쳐서 출력하는 레이아웃 클래스이다. 카드를 쌓듯이 뷰를 추가한 순서대로 위에 겹쳐서 계속 출력한다. 다음은 FrameLayout에 버튼과 이미지를 추가한 예이다. // FrameLayout에 버튼과 이미지 추가 실행해보면 버튼 위에 이미지가 겹쳐나온다. FrameOut은 LinearLayout처럼 가로세로 방향으로 배치하지 않으며 RelativeLayout처럼 상대 위치를 조절하는 속성도 없다. 단순히 겹쳐서 출력하는 레이아웃이므로 특별한 속성도 없다. 똑같은 위치에 여러 뷰를 겹쳐서 놓고 어떤 순간에 하나의 뷰만 출력할 때 사용한다. 따라서 대부분 뷰의 표시 여부를 설정하는 visibility 속성을 함게 사용한다. // visibility 속성 사용 android:v.. 2023. 6. 20. 07-2 상대 위치로 배치 - RelativeLayout RelativeLayout 배치 규칙 RelativeLayout은 상대 뷰의 위치를 기준으로 정렬하는 레이아웃 클래스이다. 즉, 화면에 이미 출력된 특정 뷰를 기준으로 방향을 지정하여 배치한다. 이때 다음 속성을 사용하며 각 속성에 입력하는 값은 기준이 되는 뷰의 id이다. android:layout_above: 기준 뷰의 위쪽에 배치 android:layout_below: 기준 뷰의 아래쪽에 배치 android:layout_toLeftOf: 기준 뷰의 왼쪽에 배치 android:layout_toRightOf: 기준 뷰의 오른쪽에 배치 다음은 RelativeLayout에 이미지 뷰와 버튼을 배치한 예이다. // RelativeLayout으로 뷰 배치하기 2023. 6. 19. 07-1 선형으로 배치 - LinearLayout // 실습하다가 책이 최신버전 안드로이드스튜디오랑 살~짝 달라서 이론만 공부하고 실습은 나중에 몰아서 해보도록 할게요 7장에서는 뷰를 화면에 적절하게 배치하는 방법을 다룬다. 이때 뷰를 배치하는 클래스를 레이아웃 클래스라 한다. 06장에서 다루었듯, 레이아웃 클래스는 화면을 독자적으로 출력하지 않고 다른 뷰 객체를 포함하는 일종의 그릇 역할을 한다. 안드로이드가 제공하는 레이아웃 클래스는 저마다 뷰를 배치하는 규칙이 있다. 지금부터 대표적인 레이아웃 클래스 5가지를 살펴보자. LinearLayout 배치 규칙 LinearLayout은 뷰를 가로나 세로 방향으로 나열하는 레이아웃 클래스이다. orientation이라는 속성에 horizontal이나 vertical값으로 방향을 지정한다. // LinearL.. 2023. 6. 19. 06-4 뷰 바인딩 뷰 바인딩(view binding) 레이아웃 XML 파일에 선언한 뷰 객체를 코드에서 쉽게 이용하는 방법이다 안드로이드는 UI를 구성할 때 대부분 레이아웃 XML 파일을 이용한다. 레이아웃 XML파일에 등록한 뷰는 findViewByID() 함수로 얻어서 사용해야 한다.(06-2 참조) 그런데 이 작업은 꽤 귀찮다. 한 화면을 구성하는 데만도 많은 뷰가 필요하고, 또 뷰는 대부분 코드에서 이용한다. 따라서 코드에서 뷰 객체를 선언하고 모두 findViewById() 함수로 하나하나 가져와야 한다. 그래서 개발자들은 생각했다. "액티비티에서 findViewById()함수를 이용하지 않고 레이아웃 XML 파일에 등록된 뷰 객체를 쉽게 사용할 수는 없을까?" 이를 위해 butterknife라는 라이브러리도 등.. 2023. 6. 17. 06-3 기본적인 뷰 살펴보기 티스토리 단축키 확인 ctrl + '/' 키 코드블록 단축키 alt+ctrl+',' 텍스트뷰 TextView는 문자열을 화면에 출력하는 뷰이다. 그중에서도 자주이용하는 속성을 알아보자 android:text 속성 TextView에 출력할 문자열을 지정함. android:text="helloworld"처럼 문자열을 대입해도 되고 android:text="@string/hello"처럼 문자열 리소스를 지정해도 된다. android:textColor 속성 문자열 색상 지정함. android:textColor="#FF0000"처럼 값은 16진수 RGB형식을 사용한다. android:textSize 속성 문자열 크기 지정함. android:textSize="20sp"처럼 값은 숫자를 사용하며 단위는 생략할 수 없.. 2023. 6. 17. 이전 1 ··· 3 4 5 6 7 다음