본문 바로가기

안드로이드 기본

(8)
[안드로이드 기본] 그리드뷰 사용방법 그리드뷰는 격자모양으로 아이템을 배치할 수 있는 컨테이너이다. 일반적으로, 이미지를 격자모양으로 배치할 때 사용을 주로 하지만, 텍스트와 더불어 버튼까지도 배치하는 것이 가능하다. 그리드뷰는 뷰 그룹이기때문에 최상단에 올 수가 있다. [activity_main.xml] 그리드뷰는 위의 코드와 같이 선언한다. 여기서 제일 중요한 부분은 numColumns 속성인데, 한줄에 5개의 아이템이 들어가는 속성이다. 그리드뷰는 각각의 아이템을 그려주기 위해서 어댑터 클래스를 사용해야한다. 어댑터는 데이터를 매칭시켜주는 역할을 한다. 나는 ImageAdapter를 만들어서 그리드뷰에 설정해주었다. [ImageAdapter.kt] package com.practice.demogridview import android...
[안드로이드 기본] 스크롤뷰 사용방법 스크롤뷰는 한 화면에 많은 뷰들을 보여줄 때 스크롤을 할 수 있게 해주는 뷰이다. 스크롤뷰의 특성으로는 하나의 뷰를 감쌀 수 있다는 것이다. 먼저 스크롤뷰의 간단한 예제로, 세가지의 텍스트뷰를 스크롤뷰 안에 넣어 보자. 하나의 뷰를 감쌀 수 있기 때문에 LinearLayout으로 세가지의 텍스트뷰를 감싸고 넣을 것이다. [activity_main.xml] 하나의 뷰(LinearLayout)는 스크롤뷰에 감싸지고, 화면에서 벗어난 뷰들을 스크롤을 통해서 하단으로 또는 상단으로 이동할 수 있게된다. 다음은 화면 하단부만 스크롤 할 수 있게 하고, 상단에 버튼을 고정시키는 코드이다. [activity_main.xml] 상위 LinearLayout에 버튼을 감싸고, 그 밑에 스크롤뷰로 묶었다. 그 스크롤뷰는 텍..
[안드로이드 기본] 멀티 터치를 감지하는 방법 스마트폰 앱을 보면, 두손가락으로 줌인을 하거나 줌아웃을 하는 경우가 있다. 또한, 한손가락 뿐만아니라 여러손가락도 사용을 할 경우도 발생한다. 이때 포인터를 가져와서 작업해야하는데, 멀티 포인터를 가져오기 위해 가장 기본적인 멀티 터치를 감지하는 방법에 대해서 알아보려고한다. 코드 구현 진행순서는 1. 텍스트 뷰가 두개 있는 activity_main.xml을 하나 만든다. (터치 했을 때 각 포인터의 X, Y의 값이 텍스트뷰에 보여줄것이다.) 2. 멀티 터치를 좌표값을 받아 올수 있는 터치 이벤트를 오버라이드 하는 MainActivity.kt를 만든다. 3. 포인터 값을 두개의 텍스트에 setText() 하여 UI로 나타낸다. 먼저 activity_main.xml을 만든다. [activity_main...
[안드로이드 기본] 기본 다이얼로그 띄우기 다이얼로그는 앱 개발을 하면서 정말 많이 사용한다. 지금은 비록 기본 다이얼로그를 띄우는 작업이지만, 다이얼로그 자체를 커스터마이징해 원하는 디자인으로 만들고, 버튼의 갯수도 지정도 가능하게 만들 수 있다. 간단한 정보를 몇초간 띄워주는 토스트(Toast)와는 다르기에 알아두면 도움이 될것이다. 기본적으로 다이얼로그는 타이틀과 메시지 그리고 버튼으로 구성된다. 다이얼로그의 종류는 AlertDialog, DatePickerDialog, PreogressDialog, TimePickerDialog 등이 있는데 아래 예제에서는 AlertDialog를 가지고 구현할것이다. AlertDialog 클래스의 메소드는 아래와 같이 정리할 수 있다. AlertDialog create() AlertDialog를 생성한다...
[안드로이드 기본] 터치 이벤트 순서 알아보기 안드로이드 사용자 인터페이스를 보면, 액티비티 위에 다양한 뷰들이 올라가는 방식이다. 그러다보면 이벤트가 중첩되어서 처리되는 경우가 있다. 예를 들어서, 어떤 액티비티에 터치 이벤트가 설정되어 있는데 그 위에 올라가 있는 뷰에도 터치 이벤트가 설정되어 있다면 어떻게 될까??? 그리고 그 뷰에 추가적으로 터치 리스너도 추가 되어 있다면 어떻게 동작할까? 무엇이 먼저 처리되지?? 터치 이벤트를 처리하고나서 해당 이벤트를 전달하고 싶지 않을 때 어떻게 해야할까?? 엑티비티위에 버튼이 올라간다고 하면, 그 버튼을 클릭했을 때 실질적으로는 버튼도 터치가 되지만, 그 해당 엑티비티도 선택이된다. 그렇다는 것은 각각 가지고 있는 터치 이벤트들이 전달 전달되어 실행된다는 것이다. 먼저 아래의 예제는 1. 엑티비티에 터..
[안드로이드 기본] 액티비티와 주요 구성 요소 안드로이드에서 가장 중요한 4대 컴포넌트는 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더이다. 그리고 그외의 인텐트, 인텐트 필터, 노티피케이션, 프래그먼트가 존재한다. 먼저 액티비티(Activity)는 사용자 인터페이스 화면을 구성하는 컴포넌트이다. 다양한 위젯들이 화면안에 구성이되고, 사용자에게 시각적으로 보여지게 된다. 서비스(Service)는 백그라운드에서 실행되는 컴포넌트이며, 백그라운드에서 실행되기때문에, 시각적인 사용자 인터페이스를 액티비티와 다르게 가지지 않는다. 인텐트(Intent)는 앱을 개발하다보면 데이터를 주고 받고 싶은 경우가 있다. 이때 인텐트를 사용하여 데이터를 주고 받게 되는데,사용되는 것이 인텐트이다. 액션도 넣을 수 있고, 플래그도 넣을 수도 있다. 메시지라고..
[안드로이드 기본] 셀렉터 속성 정리하기 버튼에 셀렉터를 지정하는 일은 안드로이드 개발하면서 많이 발생하는 일이다. 셀렉터를 지정하는 방법과 셀렉터 속성에 대해서 정리를 해보자! 셀렉터는 /res/drawable 디렉터리에 위치한 drawable 리소스로 만들어진다. button에는 android:drawable의 속성 값으로 들어가게 된다. selector 속성의 종류 android:state_pressed : 뷰가 눌렸을 때 (예, 터치나 클릭이 발생했을 때) android:state_focused : 뷰에 포커스가 위치했을 때 (예, EditText를 입력할 수 있을 때) android:state_selected : 뷰를 선택했을 때 (예, 방향키로 이동하다가 선택했을 때) android:state_checkable : 체크 가능한 상태일..
[안드로이드 기본] 안드로이드 로그 남기기 안드로이드에서 오류가 났을 때 안드로이드가 에러 메시지를 띄어준다. 하지만, 개발자가 코드를 작성하고, 그 코드의 문제가 생겼을 때의 모든 에러 메시지를 안드로이드가 띄어줄 수는 없다. 그렇기 때문에 그 문제를 살펴보기 위해 개발자는 로그를 잘 남겨야하는데, 안드로이드에서 로그를 남기는 방법은 아래와 같이 5가지가 있다. 안드로이드 로그 남기기 Error : 가장 심각한 문제가 발생했을 때 남기는 로그 Log.e("tag","error message"); Warning : 심각하지는 않지만, 나중에라도 문제의 소지가 있을 수 있어서 남기는 로그 Log.w("tag","warning message"); Information: 어떤 처리를 하면서 발생하는 진행 과정 등을 모니터링 하기 위한 목적으로 남기는 ..