Android

· Android
일반적으로 앱들은 하나의 앱으로 되어있지 않고, 여러 페이지로 되어있다. 즉 여러가지 액티비티를 두고, 액티비티를 전환하는 것이다. 액티비티를 추가 하기 위해서 안드로이드 프로젝트 "app" 우클릭 - New - Activity - Empty Activity를 선택하여 새로운 액티비티를 추가해 준다. 액티비티를 이렇게 추가해 주면, AndroidManifest에 새로 추가한 액티비티의 정보가 들어가 있을것이다. 여기서 각자 만들고자 하는 예제에 따라 추가적인 속성을 부여해 준다. 필자같은 경우 , Dialog 테마의 액티비티를 생성해 주었고, 액티비티의 제목에 해당하는 label속성은 Menu Activity로 지정하였다. 태그는 기본적으로, 생성된 액티비티에 대한 정보를 가지고 잇으며, 새로운 액티비티..
· Android
예를 들어서 메인 레이아웃 안에 부분 화면을 띄워본다고 가정하자. 기본적으로 메인 레이아웃은 setContentView()메소드를 사용해서, 인플레이션 과정을 거친다. 그렇다면 부분화면은 어떻게 띄워야할까? 처음에 setContentView()로 부분화면을 객체화할 수 있지 않을까? 생각해 봤지만, 부분화면을 인플레이션하지 못한다고 한다. 이 이유는 setContentView()메소드는 Activity에 보일 View를 지정할 때 사용하는 메소드이기 때문이라고 한다. 부분화면이 메인 액티비티에 띄워지는 과정은 아래 과정과 같다(소스코드 관점) 부분화면 레이아웃 인플레이션 부분화면 레이아웃이 담길 ViewGroup지정 ViewGroup을 메인 레이아웃에 띄운다. 우선 activity_menu.xml, su..
· Android
안드로이드 개발을 할때 코드(Java, Kotlin)파일과 XML Layout파일을 분리시키는것을 알 수 있다. 그리고 소스코드에 setContentView메소드를 이용해 해당 코드와 같이 사용할 전체 레이아웃을 지정하곤 한다. setContentView에 지정할때 R.layout.(확장자 없이 레이아웃 파일 이름만) 과 같이 지정하는데, 여기서 R 클래스는 프로젝트 창의 "res"폴더를 의미하는 클래스이며 각 리소스에 id가 배정되는 클래스이다. 즉, R.layout 이라고 하면 res/layout이라는 의미이다. 다른 예시로 R.id라고 하면, 이 프로젝트 내에 생성된 리소스들 중 특정 id를 지정하는 것을 의미한다. https://developer.android.com/reference/androi..
· Android
Progress Bar은 진행 정도를 표시하거나, 작업이 진행중임을 사용자에게 알려야한다. 안드로이드에는 크게 두가지 모형의 Progress Bar이 존재한다 막대모양 : 작업의 진행 정도를 알려줄 수 있도록 막대 모양으로 표시 원 모양 : 작업이 진행중임을 알려준다. 원모양으로된 프로그레스바가 반복적으로 표시된다. Progress Bar의 XML 태그는 이며,프로그래스 바가 갖는 최대 범위는 max속성으로, 현재 값은 progress속성으로 나타내준다. 현재값인 progress속성은 메소드인 setProgress(int progress)를 통해서 설정해 줄 수 있다. 예제 소스코드를 보자. package com.example.sampleprogress; import androidx.appcompat.a..
· Android
AlertDialog 응용예제가 갑자기 생각났다. 간혹 몇몇 애플리케이션에서 root 액티비티에서 뒤로가기 키를 누르면, "앱을 종료하시겠습니까?" 라는 Dialog창을 띄우는것을 볼 수 있다. 한번 그 코드를 구현해 보려고 한다. 우선 코드는 아래와 같이 작성하였다.(딱히 설정할 레이아웃은 없다) package com.example.sampletoast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; import an..
· Android
안드로이드 환경을 사용하다 보면 아래와 같이 알림상자를 간혹 볼 수 있다. 이러한 것을 알림 대화상자, AlertDialog라고 부르며, 이는 사용자에게 확인을 받거나 선택하게 할때 사용한다. Edit Text와 같이 사용자와의 상호작용을 위한것이 아닌 일방적인 메세지 전달의 역할이다. 아래 예시와 같이 레이아웃과 MainActivity.java 파일을 작성하자 activity_main.xml MainActivity.java package com.example.sampletoast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInte..
· Android
안드로이드는 두가지의 이벤트가 존재한다. 터치 이벤트 : 손가락으로 화면을 터치시 발생 키 이벤트 : 실제 버튼이나 소프트 키패드를 누를시 발생 안드로이드에서는 터치 이벤트를 쉽게 처리할 수 있도록 '클릭 이벤트'를 별도로 제공한다. 예를 들면 XML을 이용해 버튼에 onClick attribute에 처리기 함수를 등록하는것처럼 말이다. 버튼의 onClick은 코드적으로 setOnClickListener() 를 통해서 등록할 수 있다. 이러한 처리 방식을 "위임 모델(Delegation Model)"이라고 부른다. 위임모델은, 화면에서 발생하는 이벤트를 위젯객체에 전달한 후 이 처리과정을 위젯에 위임하는 구조이기 때문에 이렇게 부른다. 그리고 이 위임모델은 각각 이벤트를 처리할 수 있는 리스너 인터페이스..
· Android
예시 SMS입력 레이아웃을 만들자. 화면 구성은 아래 3가지로 요약된다. 입력상자 현재 입력중인 글자 수를 Count해주는 TextView, 이것은 오른쪽에 정렬되어있다. 버튼 두개가 있는 레이아웃 : Send, Copy두가지가 있다. 이 버튼들은 가운데 정렬되어있다 Send : 입력한 문자를 Toast로 출력한다 Copy : 입력한 문자를 클립보드에 복사한다. 복사가 완료되면, Toast로 복사되었다고 알려준다 다른 추가적인 조건들은 아래와 같다. 최대 80바이트를 입력할 수 있다. addTextChangedListner 메소드를 사용하면, TextWatcher 객체를 설정하여 텍스트가 변경될 때 마다 발생하는 이벤트를 처리한다. TextWatcher는 아래 세가지 메소드 선언문이 정의되어있는 Inte..
· Android
텍스트를 클립보드에 복사하는 기능을 구현해 보자. 이 기능을 구현하기 위해서는 "ClipboarManager"라는 클래스를 사용해야한다. 다만 주의할 점은 "android.content.ClipboardManager"를 선언해 주어야 한다는 것이다. Android Document는 아래 링크에 있다. https://developer.android.com/guide/topics/text/copy-paste?hl=ko 복사하여 붙여넣기 | Android 개발자 | Android Developers 복사하여 붙여넣기 Android는 복사하여 붙여넣기를 지원하는 강력한 클립보드 기반 프레임워크를 제공합니다. 텍스트 문자열, 복잡한 데이터 구조, 텍스트 및 바이너리 스트림 데이터, 애플리케 developer.an..
· Android
테이블 레이아웃은 표나 엑셀 시트와 같이 '테이블'형태로 화면을 구성하는 레이아웃이다. 테이블은 기본적으로 열과 행으로 이루어져있는데, 테이블 레이아웃 또한 열과 행으로 레이아웃을 구성한다. Table Layout은 기본적으로 TableRow라는 태그가 여러개 들어가 한 행을 구성한다.TableRow안에는 뷰들이 들어가고, 이 뷷르은 각각 하나의 열이 된다.그리고 TableRow마다 추가된 뷰의 개수가 열의 개수가 된다. 우선 LinearLayout안에 TableLayout을 넣어준다. TableLayout은 Palette의 Layouts에 있다. 하나의 특징을 더 살펴보면, TableLayout안에 TableRow가 디폴트로 4개 생성되는것을 볼 수 있다. TableRow를 추가하면 기본적으로 layo..
· Android
레이아웃에 뷰를 추가하면, 기본적으로 뷰는 나머지 공간을 모두 채울수도, 위치를 지정할 수 도 있다. 하지만 여유공간을 모두 채우면, 뷰가 서로 달라붙거나, 텍스트가 꽉차보여 구성이 이상해질 수 도 있다. 뷰는 바깥공간과 안쪽 공간이 있고, 일반적으로 모든 공간을 포함한 부분을 셀 이라고 한다. 일반적으로 버튼, 텍스트뷰를 위젯이라고 부르기 때문에, 위젯 셀이라고도 한다. 뷰의 바깥쪽 공간을 Margin이라고 하고, lay_out_margin속성으로 간격을 지정할 수 있다. 테두리 안쪽을 Padding이라고 부르며, padding속성을 이용해서 설정할 수 있다. 아래와 같이 TextView세개를 만들고 Padding을 실험해 보자. 디폴트를 보면, layout_width가 wrap_content로 되어있..
· Android
리니어 레이아웃 안에 들어있는 뷰는 왼쪽 가운데, 오른쪽 등 방향을 지정해 정렬할 수 있다. CSS에서는 align이라는 속성으로 정렬을 하였지만 안드로이드에서는 'gravity'라는 속성으로 정렬을 한다. 레이아웃 정렬기능에는 아래 두가지가 있다. 정렬 속성 설명 layout_gravity 부모의 여유 공간에 뷰가 모두 채워지지 않아 여유공간이 생겼을 때 여유공간 안에서 뷰를 정렬한다 gravity 뷰 안에 표시하는 내용물(content)를 정렬한다. layout_gravity 우선적으로 layout_gravity속성은 layout_width, layout_height 속성을 wrap_content(컨텐츠를 감싸는것을 의미) 로 만든 후 에 사용할 수 있다. 그 이유는 match_parent를 사용하면..
Hoplin
'Android' 태그의 글 목록