페이지

레이블이 IntelliJ인 게시물을 표시합니다. 모든 게시물 표시
레이블이 IntelliJ인 게시물을 표시합니다. 모든 게시물 표시

2013년 6월 11일 화요일

텍스트 에디터를 통한 UI 레이아웃 수정


애플리케이션의 메인 뷰에 다른 요소들을 추가하고 수작업으로 UI 레이아웃을 어떻게 수정하는지 보자.

1. 텍스트 보기로 전환

파일 편집기의 하단에 있는 Text 탭을 클릭한다. IntelliJ IDEA는 현재 선택된 레이아웃 파일의 XML 소스 코드를 보여준다.

2. 수평선 추가하기

이 튜토리얼의 목적을 위해 구분자와 새로운 TextView를 삽입하는 마크업을 추가하자. 수평선을 갖는 가장 쉬운 방법은 다름 코드를 추가하는 것이다.
<View android:layout_width="fill_parent"
     android:layout_height="5dp"
     android:layout_marginTop="60dp"
     android:background="#00ff00" />

구분자는 5 단위를 두깨이고 녹색 배경을 갖고 있으며 가장 가까운 요소의 아래로부터 60 단위만큼 위치해있다.

3. TextView 추가하기

또 다른 TextView를 추가하기 위해서 아래의 마크업을 입력하라.

<TextView android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="60dp"
         android:text="Warning! Don't touch the droid..."
         android:id="@+id/message"
         android:layout_gravity="center_horizontal" />


이 요소는 구분자의 아래로 60  단위에 위치한다; 수평 중앙에 위치하고 기본 텍스트 색상을 사용한다. 이 요소와 관련있는 문자열은 명백히 지정되어 있다. 구분자와는 다르게, TextView는 또한 이상한 문자열로 설정된 id 속성을 가지고 있다. 이 문법은 / 기호 다음에 ID 리소스로 다뤄지는 문자열을 가지고 있고, 뷰 요소를 참조하기 위해 사용될 것이다. 안드로이드 런타임은 적절하게 정보를 사용하고 이것은 TextView와 상호 작용하는 Java 코드를 작성할 수 있게 해준다.

4. 프로젝트 빌드

이 단계에서 동일한 프로젝트를 컴파일한다면 아래 그림과 같은 결과를 얻을 것이다.

2013년 6월 9일 일요일

Eclipse + Subclipse 조합의 안드로이드 프로젝트를 IntelliJ로 가져오기


Eclipse에서 만든 프로젝트를 IntelliJ로 가져오기 위한 방법은 Google에서 이미 가이드하고 있다. 그런데 이상하게도 Eclipse에서 build.gradle를 만들어서 SVN 저장소에 Commit한 후 IntelliJ에서 Checkout을 하면 빌드가 되지 않는 문제가 발생한다.

이 프로젝트를 IntelliJ에서 Checkout하면서 동시에 프로젝트로 만들 수 있다.

1. IntelliJ에서 SVN 저장소로부터 프로젝트를 Checkout한다.


2. Checkout된 프로젝트를 Import한다.


3. Run Configurations를 설정한다.


4. 메뉴의 Run > Run...을 실행한다.


java.lang.IllegalArgumentException: Argument 0 for @NotNull parameter of com/android/tools/idea/jps/builder/AndroidGradleBuilder.createBuildTask must not be null: Argument 0 for @NotNull parameter of com/android/tools/idea/jps/builder/AndroidGradleBuilder.createBuildTask must not be null

분명히 이 과정에서 별 문제 없이 프로젝트를 Import하였음에도 불구하고 위와 같은 에러가 발생한다.

하지만 다음과 같은 방식으로 Import하면 문제가 발생하지 않는다.

1. SVN에서 Checkout을 한 후 프로젝트를 바로 열지 않는다.

Checkout 후에 위와 같은 대화상자가 나오면 No를 선택한다.

2. Checkout한 프로젝트를 수동으로 다시 Import한다.


3. Checkout한 디렉토리 중 프로젝트에 추가할 디렉토리를 선택한다.

SVN에서 Checkout을 하면서 동시에 프로젝트로 Import하는 경우에는 이 과정이 없었다.

4. 프로젝트에서 사용될 라이브러리와 모듈을 선택한다.


5. 프로젝트에서 사용될 SDK를 선택한다.


6. 나머지 과정을 진행한다.


7. 프로젝트 Import가 완료되면 Run Configurations를 설정하고 Run을 실행한다.


8. 빌드 성공!!


2013년 6월 8일 토요일

디자이너를 통한 UI 레이아웃 수정

이 단계에서, HelloDroid 샘플 애플리케이션의 사용자 인터페이스는 배우 단순한 레이아웃에 기초하고 있다. UI 레이아웃은 res/layout 폴더에 위치한 main.xml 파일에 정의되어있다. 기본적으로, IntelliJ IDEA는 레이아웃 파일의 그래픽 뷰를 제공하지만 XML을 수동으로 입력하여 레이아웃을 수정하는 텍스트 기반 뷰로 전환할 수 있게 해주고 있다.


1. 레이아웃 파일 열기

Project 뷰에서 res/layout 폴더 아래에 있는 main.xml 파일을 선택한다.

자동으로 생성된 사용자 인터페이스를 수정해보자.

2. 기존의 텍스트 요소 삭제
첫 번째처럼, 뷰 안의 텍스트 레이블을 선택하기 위해 클릭하고 마우스 우측 버튼을 클릭해서 컨텍스트 메뉴를 연다. 컨텍스트 메뉴에서 사용자 인터페이스를 제거하기 위해 Delete를 클릭한다.

3. ImageView 위젯 추가

우측의 팔렛트에서 ImageView 컴포넌트를 선택하고 위젯을 추가하기 원하는 폼 위를 클릭하면 된다. 드래그-앤-드롭이 더 편하다면 위젯을 main.xml 뷰에 드래그-앤-드롭할 수도 있다.

이 부분에서, 뷰는 이미지를 위한 자리 표시를 하고 있는데 이것과 관련된 실제 이미지는 아직 없다. 프로젝트에 이미지를 추가하려면 res 폴더 아래의 drawable 폴더를 우선 만들 필요가 있다.

4. drawable 폴더 생성

res 노드에서 마우스 우측 버튼을 클릭하고 New|Android resource directory를 클릭한다. 드롭-다운 리스트의 리소스 타입에서 drawable를 선택하고 적합한 qualifiers를 설정한다. 화면의 폭, UI 모드, density, 로케일 등의 다른 집합을 사용하길 원한다면 small 같은 qualifiers를 사용한다.만약 단일 집합의 리소스를 사용하고 있다면 qualifier는 필요없고 만들어진 폴더의 이름은 단지 drawable가 될 것이다.

주: 간단히 IntelliJ IDEA에서 새로운 디렉토리를 만들듯이(다른 폴더를 만든것처럼) drawable 폴더를 만들 수도 있다.

이미지를 추가하기 위해서 윈도우 탐색기에서 이미지를 선택하고 IntelliJ IDEA의 drawable 폴더에 드롭하면 된다.

5. ImageView 위젯에 이미지 파일 연결

뷰 내부의 이미지 뷰에 추가된 이미지를 연결할 준비가 되었다. UI 디자이너에서는 위젯의 속성을 수정하기 위해서 위젯을 선택할 필요가 있다. 디자이너에서 위젯을 클릭하면 간단히 위젯을 선택할 수 있다. 그러나 때때로 이것이 어려운 작업이 될 수도 있다. 만약 이미지 위젯을 추가했지만 소스 이미지가 연결되지 않았다면 마우스로 선택하기 어려운 매우 작은 박스로 보여질 수도 있다. Component Tree는 필요한 시각 요소를 쉽게 선택하게 해주는 시나리오 중 하나이다.

Component Tree를 열려면 좌측의 Designer 수직 탭을 클릭해서 전면으로 visual designer를 가져온다. Components Tree 윈도우에서 이미지 뷰 컴포넌트를 선택하고 속성 테이블의 src 엔트리로 커서를 위치시킨다.

… 버튼을 클릭하면 애플리케이션의 drawable 리소스를 탐색하는 대화상자가 열릴 것이다: 이미지를 선택하고 OK를 클릭한다.

6. TextView 컴포넌트 추가

컴포넌트 팔렛트에서 TextView 컴포넌트를 선택하고 이미지 아래에 이 뷰를 놓는다.

기본적으로, TextView는 어떤 텍스트와 연결되어 있다: New Text. 이것을 바꾸려면, 그리고 지역화된 문자열을 그것과 연결하려면 새로운 텍스트 리소스를 만들 필요가 있다.

주: UI 레이아웃에서 그래픽 컴포넌트를 추가하고, 수정하고 삭제할 때, 디자이너에서와 같은 방법으로 Component Tree를 사용할 수 있다. 위젯을 Component Tree를 드롭하고 계층 구조에서 삭제하거나 편집할 수도 있다.

7. String 리소스 생성

Components Tree 패널에서 TextView를 선택하고 속성 테이블에서 text 속성을 선택한다. ellipsis 버튼을 클릭해서 기존의 문자열 값을 선택하거나 새로운 것을 추가할 수 있다. 편집 대화상자는 프로젝트의 res/values 폴더에 있는 strings.xml 파일에서 문자열을 선택한다.

필요한 경우에, strings.xml 파일을 직접 수정할 수도 있다.

8. 텍스트에 스타일 추가

텍스트를 좀 더 눈에 띄게 하려면 몇 가지 추가 속성을 설정하는 것이 필요하다. TextView 컴포넌트의 속성 테이블에서 디자이너를 통해서 할 수 있다.

먼저, 텍스트를 수평 중앙에 위치시키고 싶을 것이다. 이것은 gravity 속성에 center_horizontal을 설정한다.
다음, 텍스트에 약간의 여백을 주고 싶을 것이다: padding 속성으로 가서 10dp를 설정한다.
텍스트 색상을 변경하려면, textColor 속성을 변경한다. 이 속성을 색상 문자열인 #ffd764로 설정할 수도 있고 색상 리소스를 참조하도록 할 수도 있다. 색상 리소스를 추가하기 위해서는 ellipsis 버튼을 클릭하고 welcomeText라는 이름에 #ffd764 값을 가진 리소스를 만든다.
텍스트의 크기를 늘리리면 textSize 속성을 수정한다. 비슷한 방법으로, 직접 값을 설정하거나 크기 리소스로 설정한다. 크기 리소스를 설정하기 위해서 ellipsis 버튼을 클릭해서 largeText라는 이름에 폰트 크기를 가리키는 20dp 값을 가진 리소스를 만든다.

주: 단순 숫자로써 dimensions를 가리키게할 수 없다. 항상 dp 접미사를 추가해야 한다.

아래 그램은 현재의 사용자 인터페이스 상태를 보여준다.

9. 다른 테마 시도

UI 디자이너 윈도우는 상단에 미리보기를 돕는 몇 가지 옵션이 있다. 특히, 사전 정의된 테마 리스트를 가지고 있다. 테마는 전체 애플리케이션 UI의 모양을 몇 개의 공통된 시나리오로 어떻게 보이게 할지를 빠른 방법으로 확인할 수 있다. 예를 드면, 타이틀바가 없는 애플리케이션의 룩앤필을 빠르게 미리볼 수 있다.

테마에 의해 정해진 특징들 중 일부는 코드상에서 즉시 설정할 수도 있다. 코드 상에 이러한 변경 사항을 입력할 책임이 있다. 예를 들어, 타이틀바를 숨기려면 MyActivity.java에 코드를 추가할 필요가 있다.

public void onCreate(Bundle savedInstanceState)
{
   super.onCreate(savedInstanceState);

   // This is the line that removes the title bar
   requestWindowFeature(Window.FEATURE_NO_TITLE);

   setContentView(R.layout.main);
}

10. 디바이스 프로파일 생성

UI 디자이너 윈도우의 상단 툴바는 다양한 조건에서 레이아웃 미리보기를 위한 옵션을 제공한다: 가로보기 또는 세로보기, 작은 화면 또는 큰 화면, 로컬라이징, 다양한 플랫폼하에서의 환경 등등. 기본적으로, IntelliJ IDEA는 기본 프로파일에 따라 레이아웃을 그린다.
애플리케이션에 가장 맞는 조건의 레이아웃 프리뷰를 빠르게 보기 위해 커스텀 프로파일을 만들 수 있다. 새로운 디바이스 프로파일을 디자이너에서 만들려면 [Full] 드롭다운을 클릭하고 수정할 프로파일을 선택한다.

그 다음 +를 클릭하고 새로운 디바이스 프로파일을 설정한다. Visible 체크박스는 UI 디자이너에 해당 속성을 표시하게 해준다. 예를 들면, 새롭게 만들어진 프로파일은 테마, 독, 야간 모드 속성을 필터링하고 가로 모드로 설정한다. 새롭게 만들어진 프로파일은 드롭다운 리스트에 보여지고 나중에 빠르게 적용시킬 수 있다.




애플리케이션 빌드 및 실행

여기에서는 첫 번째 안드로이드 애플리케이션을 컴파일하고 안드로이드 에뮬레이터나 실제 기기에서 실행해보는 짜릿한 경험을 해볼 수 있다. 프로젝트를 빌드하고 애플리케이션 테스트를 시작하기 전에 현재의 빌드 설정을 확인해볼 것을 추천한다.


1.  Run/Debug Configurations 편집

Run → Edit configurations 메뉴에서 아래의 대화상자를 볼 수 있다.


IntelliJ IDEA는 프로젝트 다음에 붙은 이름을 기본 빌드 설정으로 만들고 프로젝트 생성 과정에서 봤던 환경 설정과 같은 기본 설정으로 되어있다. 대화상자는 기존의 설정을 편집하거나 새로운 설정을 추가할 수 있게 해준다. 어떻게 하는지 살펴보자.


2. 새로운 빌드 설정 추가

툴바에서 +를 클릭하고 Android Application을 선택한다.


새로운 아이템이 트리 뷰에 Unamed를 기본 이름으로 하여 추가될 것이다. 이것을 선택하고 구분할 수 있는 이름을 Name 입력 필드에서 입력한다: 예를 들면 HelloDroid Emulator가 될 수 있다.


새롭게 만들어진 설정에는 아직 사용될 준비가 되지 않았다는 표시를 위한 적색 십자가가 붙는다. 이것은 필수 정보가 부족하기 때문이다.


실행 가능 모듈 설정

Moule 드롭 다운을 펼치고 HelloDroid Emulator를 선택한다: 프로젝트에서 유일한 실행 모듈이다. 모듈을 선택할 때, 적색 십자가 표시가 사라지면서 설정이 완료되었음을 나타낸다.


실행 액티비티 설정

어떠한 안드로이드 실행 모듈이든 시작 액티비티를 필요로한다. manifest 파일에서 실행 액티비티로 설정된 액티비티를 선택하거나 특정 액티비티를 선택한다. 이 경우에, 기본 액티비티나 com.example.HelloDroid.MyActivity는 하나의 액티비티만 가지고 있는 샘플 애플리케이션에서는 같은 결과를 만들어낸다.


자동 설치 설정

애플리케이션이 자동으로 타겟 디바이스에 설치되게 할지 여부를 선택할 수 있다. 대부분은 자동으로 설치되기를 원할 것이다. 그러나, 빠져나오는 것은 Deploy application 체크 박스를 해제하는 것만큼 쉽다.


타겟 디바이스 선택

마지막으로, 타겟 디바이스를 빌드 설정에 할당할 필요가 있다. 이 경우에 Emulator를 선택한다.


타겟 디바이스를 에뮬레이터로 설정할 때, Android virtual device manager (AVD)를 선택할 필요가 있다. ...버튼을 클릭하고 아래 그림의 대화상자에서 설정하여 새로운 AVD를 만들 수 있다:


AVD는 흉내내기 위한 에뮬레이터의 하드웨어와 소프트웨어 옵션을 정의하는 설정 파일이다. AVD 설정에서 IntelliJ는 Emulator 탭에서 몇 개의 파라미터를 제공한다. 예를 들면, GPRS 연결을 시뮬레이션하기 위한 네트워크 지연 파라미터를 설정할 수 있다.


 IntelliJ IDEA 사용자 인터페이스를 통해 설정할 수 있는 파라미터가 커맨드라인 파라미터로 에뮬레이터에 넘겨진다는 것에 주목하자. 필요한 경우에 그림의 텍스트 박스를 사용한 커맨드라인 파라미터를 추가적으로 설정할 수 있다.


3. 프로젝트 빌드

프로젝트를 빌드하기 위하새 Shift + F10 또는 Run을 클릭한다. 두 경우에서 프로젝트는 선택된 설정에 따라 빌드될 것이다: 드롭 다운 리스트에서 같은 것을 볼 수 있다.


드롭 다운 리스트를 클릭하거나  Alt + Shift + F10 키를 눌러서 빌드 설정을 선택하는 대화상자를 불러올 수 있다.


4. 에뮬레이터 상에서 애플리케이션 테스트

IntelliJ IDEA는 파일을 빌드하고 에러가 발생하지 않으면 APK 파일에 바이너리와 리소스를 패키징하고 안드로이드 에뮬레이터에 올린다.
만약 안드로이드 에뮬레이터가 실행중이 아니라면 IntelliJ IDEA는 에뮬레이터를 시작하고 초기화해서 애플리케이션을 올릴 것이다. 에뮬레이터는 패키지를 받아서 설치하고 설정된 실행 액티비티를 호출한다.


5. 실제 기기에서 애플리케이션 테스트

실제 기기에서 애플리케이션을 테스트하기 위해서 적절한 빌드 설정을 선택하고  USB 케이블로 컴퓨터와 디바이스를 연결할 필요가 있다. 만약 디바이스에 충분한 저장 공간이 있다면 애플리케이션은 성공적으로 설치된다.


인스톨이 실패하는 이유는 안드로이드 앱 스토어 외부의 애플리케이션을 설치하도록 설저되지 않은 것이다. 해당 기기에서 이 설정을 활성화하는 것은 애플리케이션 테스트에 필수적이다.


6. 애플리케이션 디버깅

마지막으로, IntelliJ IDEA는 애플리케이션을 디버깅하기 위해 소스 코드에 중단점을 설정할 수 있다. 디버그 세션을 시작하기 위해, 메뉴 아이템에서 Run → Debug... (Run → Run... 메뉴 아이템 대신.)를 클릭한다. IDE는 빌드 작업을 하고 첫 번째 중단점에서 실행을 멈춘다.


에뮬레이터에서든 실제 기기에서든 상관없이 동일한 방식으로 애플리케이션 디비깅을 한다.


7. 로그 이벤트 보기

안드로이드는 애플리케이션과 시스템으로부터 자동적으로 디버그 출력을 모으는 로깅 시스템을 가지고 있다. IntelliJ IDEA에서 이러한 이벤트를 Logcat 윈도우에서 볼 수 있다. Logcat 윈도우는 애플리케이션이 실행되는 동안 안드로이드 실행 환경으로부터 받은 알림을 받는 곳이다.


Logcat 윈도우에 의해 캡쳐된 메시지는 Log level 드롭 다운 리스트를 통해 필터링될 수 있다. 기본적으로, Logcat 윈도우는 Clear log 버튼을 통해 로그를 삭제할때까지 쌓인다.


이 페이지의 앞에서 보았던 빌드 설정 대화상자에 Logcat 탭이 있고 애플리케이션이 실행된 후 로그를 삭제하는 체크 박스가 있었다는 것에 주목하자.