안드로이드 (10) 썸네일형 리스트형 안드로이드 공부 기초 10(Navigation) 지금까지 공부했던 내용을 토대로 Navigation Drawer가 있는 프로그램을 만들었다. Andoird Studio에서 제공하는 Navigation Drawer Activity를 사용해 만들었는데, 새 프로젝트를 만들었을 때 프로그램의 구조가 너무 복잡해서 공부하고 파악하는 데 시간이 많이 걸렸다. 우선 프로그램 구조부터 살펴보자. activity_main은 app_bar_main과 nav_view가 있다. app_bar_main은 아무 행동도 하지 않았을 때의 화면이고 nav_view는 Navigation Drawer를 열었을 때의 화면이다. app_bar_main엔 다음 세 가지가 있다. content_main : 메인 화면으로 Fragment를 띄우는 공간이다. tool_bar : toolbar.. 안드로이드 공부 기초 9(Layout의 속성) Layout에서 자주 사용되는 속성은 다음과 같다. orientation: Layout안에 배치할 위젯의 수직 또는 수평 방향을 설정한다. gravity: Layout 안에 배치할 위젯의 정렬 방향을 좌측, 우측, 중앙 등으로 설정한다. padding: Layout 안에 배치할 위젯의 여백을 설정한다. layout_weight: Layout이 전체 화면에서 차지하는 공간의 가중값을 설정한다(여러 개의 Layout이 사용될 때). baseLineAligned: 레이아웃 안에 배치할 위젯을 보기 좋게 정렬한다. LinearLayout을 통해 자주 사용되는 속성을 사용해 보겠다. 1. orientation orientation의 값으로 horizontal과 vertical을 사용할 수 있다. horizonta.. 안드로이드 공부 기초 8(Toolbar & Fragment) Toolbar는 안드로이드 5.0부터 추가된 Widget으로, App에서 가장 중요한 Action 또는 가장 자주 사용되는 Action들을 제공하는 AppBar를 만들 때 사용한다. 예전엔 AppBar를 ActionBar라고 부르기도 했었다고 한다. 지금까지 많은 곳에서 AppBar와 ActionBar바를 혼용해서 사용한다. 보라색 부분이 AppBar 혹은 Toolbar이다. 새로운 버전의 안드로이드가 배포됨에 따라 AppBar에 여러 기능이 추가되었고, 시각적인 부분도 많이 바뀌었다. 이로 인해 버전에 따라 AppBar가 다르게 동작하는 Issue가 생겼고, 이러한 단점을 보완하고 하위 호환성을 제공하기 위해 Support Library를 사용하기 시작했다. AppBar의 여러 기능은 v7 AppCom.. 안드로이드 공부 기초 7(Binding) Navigation Drawer 기능을 사용해 Navigation 목록이 있는 프로그램을 작성하려고 하는데 어렵고 생소한 기능이 많았다. 하나하나 이해하면서 공부하기 위해 이번엔 Binding 기능을 알아보겠다. 기존 xml 파일에서 id를 가져와 동적인 일을 할 때 TextView나 Button 같은 변수를 선언하고 findViewById()를 통해 변수와 xml 파일의 요소를 연결했다. 하지만 이런 방식으로 연결하게 되면 몇 가지 단점이 있다. 실수로 유효하지 않은 id를 사용하면 null 오류가 발생할 수 있고, casting Type을 잘못 적어서 casting 하면 cast exception이 발생할 수 있다. 또한 속도가 상대적으로 느리다. 이러한 단점을 해결하기 위해 기존엔 Butter kn.. 안드로이드 공부 기초 6(ListView) Data 들의 목록을 가지는 ListView에 대해 알아보자. ListView는 사용자가 정의한 데이터 목록을 세로 방향으로 나열하여 화면에 표시하는 뷰 그룹의 한 종류이다. ListView에 사용자가 정의한 데이터를 표시하기 위해서는 Adapter를 사용해야 한다. Adapter는 사용자의 데이터를 받아 View를 생성해주는 객체로 ListView와는 독립적으로 동작하는 객체이다. ListView는 Adapter로부터 생성된 View를 받아 ListView의 한 항목으로 배치한다. Adapter는 관리되는 데이터와 제공하는 View 형태에 따라 종류가 다양하다. 위 구조를 활용해 기본적인 예제 프로그램을 작성했다. 우선 xml파일에 ListView를 추가했고, java 파일에 String을 저장하는 A.. 안드로이드 공부 기초 5(AndroidManifest.xml) App의 구조와 설정이 저장되어 있는 AndroidManifest.xml 파일을 알아보자. application 태그에서는 기본 앱 설정을 할 수 있다. allowBackup 속성은 안드로이드 시스템에서 제공하는 백업 기능에 이 App을 포함할 것인지를 결정하는 것이다. true이면 재설치 시 기존 정보를 복원하고 false이면 재설치하더라도 항상 새로 설치한다. icon은 App 아이콘이고 label은 App 이름이다. supportRtl는 이슬람 문화권의 오른쪽에서 왼쪽으로 글 쓰는 방식에 대한 것을 지원하는지에 대한 설정으로, true로 설정하면 이슬람 문화권의 경우 안드로이드 시스템이 자동으로 왼쪽과 오른쪽을 반전해준다. theme는 App의 테마 색이다. activity 태그는 Activity .. 안드로이드 공부 기초 4(ImageView & Toast) 화면 전환 기능을 구현해 보니 아주 간단한 프로그램을 만들어보고 싶었다. ImageView와 Toast를 사용해 로그인 기능이 있는 Counter 프로그램을 만들어보기로 했다. ImageView부터 설명하자면 HTML의 Image와 같이 이미지를 추가하는 것이다. id를 설정해 동적인 기능도 수행할 수 있다. Toast는 알림 메시지인데 토스트 기계에서 토스트가 튀어나오는 것과 같다고 해서 붙여진 이름이다. Toast를 이용하면 간단한 알림을 띄울 수 있다. DB에 연동할 수 있다면 회원가입, 아이디 인증, 랭킹 시스템을 구현할 수 있을 것이라 생각해 DB 클래스를 만들고 MYSQL과 연동하려 했는데 계속 ClassNotFoundExcption이 발생했다. 구글링해 본 결과, Android와 MYSQL이.. 안드로이드 공부 기초 3(Intent) Button을 통한 동적인 기능을 구현해 봤으니 이번에는 Activity 전환을 구현해 보겠다. 먼저 Activity란 하나의 화면을 가리키는 말이다. 앞서 작성한 프로그램에서 EditText와 Button이 있는 화면이 하나의 Activity인 것이다. Intent는 Application의 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 인텐트를 가장 손쉽게 사용한 예로는 Activity간의 화면전환을 들 수 있다. Intent를 이용해 한 Activity에서 다른 Activity로 전환할 수 있다. 쉽게 말해 화면전환을 할 수 있다. 우선 실습을 통해 사용법을 간단히 익혔다. EditText에 Text를 입력하고 Button을 누르면 다음 Activity로 이동하고 입력했던 .. 안드로이드 공부 기초 2(EditText & Button) TextView를 이용해 Text를 만들어 봤으니 EditText와 Button을 통해 값을 입력받고 OnClickListener을 사용해 Button에 기능을 넣어 볼 차례다. EditText에 Text를 입력하고 Button을 누르면 getText()와 setText()를 이용해 TextView를 EditText에 입력된 Text로 바꿔주는 간단한 기능을 가진 프로그램을 만들어 보았다. 우선 EditText, Button, TextView를 넣어주고 동적인 일을 할 것이므로 id도 설정해 주었다. 다음은 실질적인 코딩이다. Listener가 Java Swing과 비슷한 느낌이라 친숙했다. EditText, Button, TextView 변수를 헷갈리지 않게 id와 같은 변수명으로 전언했다. findV.. 안드로이드 공부 기초 1(Android studio 설치 & TextView) Android studio를 설치하는 과정이 까다로웠다. 남는 스마트폰이 있어 AVD를 설치하지 않아도 됐지만, 그냥 설치해버렸다. 열심히 구글링하며 초기 설정을 하고 첫 번째 프로젝트를 만들었다. Java가 익숙하고 개발하고 싶은 App의 개발 기간이 여유롭지 않아 Kotlin 대신 Java로 정했다. 성능 차이는 거의 없으니까... 가장 기본적인 TextView 부터 시작했다. 우선 Layout을 LinearLayout으로 바꿔 주고 TextView 코드를 작성했다. layout_width와 layout_height를 각각 match_parent와 wrap_content로 설정했다. match_parent는 부모의 크기에 맞추는 것인데 현재 부모는 화면이므로 text가 화면의 가로 길이에 맞춰진다. .. 이전 1 다음