안녕하세요. 이번에는 안드로이드 레이아웃에 대해서 알아보겠습니다.


안드로이드에서 제공하는 기본 레이아웃은 다음과 같이 크게 다섯 가지로 나눌 수 있습니다.



레이아웃 이름 

설 명 

 리니어 레이아웃(LinearLayout)

- 박스(Box) 모델

- 사각형 영역들을 이용해 화면을 구성하는 방법

- 표준 자바의 BoxLayout과 유사 

 상대 레이아웃(RelativeLayout)

- 규칙(Rule) 기반 모델

- 부모 컨테이너나 다른 뷰와의 상대적 위치를 이용해 화면을 구성하는 방법 

 프레임 레이아웃(FrameLayout)

- 기본 단위 모델

- 하나의 뷰만 보여주는 방법

- 가장 단순하지만 여러 개의 뷰를 추가하는 경우 중첩시킬 수 있으므로 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식으로 사용할 때 유용함 

 테이블 레이아웃(TableLayout)

- 격자(Grid) 모델

- 격자 모양의 배열을 이용하여 화면을 구성하는 방법

- HTML 에서 많이 사용하는 정렬 방식과 유사하여 실용적임 

 스크롤 뷰(ScrollView)

- 스크롤이 가능한 컨테이너

- 뷰 또는 뷰그룹이 들어갈 수 있으며 화면 영역을 넘어갈때 스크롤 기능 제공


추가로 절대 레이아웃(AbsoluteLayout) 이라는것이 있기는 한데 안드로이드 단말은 해상도나 화면 크기가 모두 달라 절대 좌표를 사용하는 경우에는 단말마다 다른 해상도를 맞추기 어렵기 때문에 더이상 지원하지 않게 되었습니다. 그냥 예전에 단말의 종류가 몇개 없을때 잠깐 사용된 적이 있다는것 정도로만 아시면 되겠습니다.


안드로이드에서 기본적으로 제공하는 레이아웃들을 사용할 때는 항상 android:layout_width와 android:layout_height 속성이 들어가야 합니다. 그 외의 다른 속성들도 필요 없으면 넣지 않을 수 있지만 위의 두 가지 속성을 넣지 않으면 오류가 발생하게 됩니다. 


다음 포스팅에서는 리니어 레이아웃에 대해서 알아보도록 하겠습니다.


Posted by 정윤문경아빠
IT 프로그래밍/JSP2014. 2. 1. 16:56

자바는 다양한 기능의 클래스를 제공하고 있으며, 이 클래스들을 사용해서 프로그래밍을 하게 됩니다. JSP 페이지 역시 자바를 기반으로 하고 있기 때문에, 자바 언어가 제공하는 클래스들을 사용할 수 있습니다. JSP 페이지에서 자바의 클래스를 사용하기 위해서는 어떤 자바 클래스를 사용할 것인지 미리 지정해 주어야 하는데, 이럴 때 사용하는 것이 바로 page 디렉티브의 import 속성입니다. import 속성은 다음과 같이 사용됩니다.



<%@ page import = "java.util.Calendar" %>

<%@ page import = "java.util.Date" %> 


위 코드는 JSP 페이지에서 java.util.Calendar 클래스와 java.util.Date 클래스를 사용할 것이라고 지정하고 있습니다. 위 코드에서는 한 줄에 하나씩 지정했는데, 다음과 같이 한줄에 여러 개를 콤마로 구분하여 함께 표시할 수 있습니다.



<%@ page import = "java.util.Calendar, java.util.Date" %> 


위 코드는 java.util 패키지에 있는 두 클래스인 Calendar와 Date를 사용한다고 명시한 것인데, 다수의 클래스를 사용해야 할 경우 위 코드와 같이 일일이 입력해 주는 것은 성가실것입니다. 이 경우 다음과 같이 '*' 를 사용하여 간단하게 특정 패키지에 속해 있는 모든 클래스를 사용할 수 있습니다.



<%@ page import = "java.util.*" %> 


위 예제처럼 표현하면 util 패키지의 모든 클래스를 사용한다는것을 간결하게 표현할 수 있지만 왠만하면 모든 클래스를 사용하는 경우는 없기때문에 가급적이면 제일 첫번째 예제처럼 사용하고자 하는 클래스를 일일이 지정하는것을 권장합니다. 왜냐하면 사용안하는 클래스까지 import 해버리면 메모리 낭비 및 속도저하를 일으킬 수 있기 때문입니다. 간단한 프로그램에서는 크게 영향을 미치지 않겠지만 복잡하고 큰 프로젝트에서는 분명한 차이가 있기 때문에 사용하고자 하는 클래스만 지정해서 사용하시기를 권장합니다.


page 디렉티브의 import 속성을 사용해서 사용할 패키지를 지정하게 되면 JSP 페이지에서 해당 클래스를 사용할 수 있게 됩니다. 예제를 통해 선언하는 방법과 사용법을 보도록 하겠습니다.




<%@ page contentType = "text/html; charset=euc-kr" %>

<%@ page import = "java.util.Calendar" %>  // import 속성을 사용하여 java.util.Calendar 클래스를 사용한다고 지정

<html>

<head><title>Calendar 클래스 사용방법</title></head>

<body>

<%

    Calendar cal = Calendar.getInstance();  // 현재 날짜 및 시간 정보를 갖고 있는 Calendar 클래스의 인스턴스를 생성

%>

오늘은

    <%= cal.get(Calendar.YEAR) %>년

    <%= cal.get(Calendar.MONTH)  +1 %> 월  // Calendar.MONTH 의 리턴값은 0부터 시작하기 때문에 반드시 +1 을 해줘야 제대로 표현됨

    <%= cal.get(Calendar.DATE) %> 일

입니다.

</body>

</html>


실행을 해보면 현재 사용하시는 컴퓨터의 날짜가 나오게 될것입니다.


지금까지 page 디렉티브에 대해서 알아보았습니다.


이해가 안되시거나 궁금하신점은 댓글 남겨주시기 바랍니다.^^



Posted by 정윤문경아빠
IT 프로그래밍/JSP2014. 2. 1. 16:35

page 디렉티브의 contentType 속성은 JSP 페이지가 생성할 문서의 타입을 지정합니다. contentType 속성의 값은 다음과 같이 구성됩니다.



TYPE


또는


TYPE; charset=캐릭터 셋 


TYPE은 생성할 응답 문서의 MIME 타입을 입력합니다. JSP에서 주로 사용되는 MIME 타입으로는 "text/html", "text/xml", "text/plain"이 있습니다. 아래는 HTML 문서를 생성하는 경우 contentType 속성의 설정 예 입니다.



<%@ page contentType="text/html" %> 


contentType 속성을 설정하지 않을 경우 기본값은 "text/html" 입니다. 그리고 '; charset=캐릭터 셋' 부분은 생략이 가능합니다. 캐릭터 셋 부분을 생략할 경우 기본 캐릭터 셋인 ISO-8859-1을 사용하게 됩니다. 국내에서는 주로 한글로 구성된 HTML 문서를 생성하는 JSP 페이지를 작성하게 되는데, 한글로 구성된 HTML 문서를 생성할 때에는 다음과 같이 euc-kr 캐릭터 셋을 사용하게 됩니다. 참고로 캐릭터 셋을 입력할 때에는 대소문자를 구분하지 않습니다.



<%@ page contentType="text/html; charset=euc-kr" %>


또는


<%@ page contentType="text/html; charset=EUC-KR" %> 


UTF-8 캐릭터 셋을 이용하는 XML 문서를 생성하고 싶은 경우에는 다음과 같이 contentType 속성에서 "text/xml" MIME 타입을 사용하고 charset의 값으로 UTF-8 을 지정하면 됩니다.



<%@ page contentType="text/xml; charset=utf-8" %> 


캐릭터 셋을 올바르게 입력하지 않으면 응답 결과에서 글자가 올바르게 출력되지 않게됩니다. 예를 보도록 하겠습니다.



<%@ page contentType="text/html; charset=iso-8859-1" %>

<%@ page import="java.util.Date" %>

<%

    Date now = new Date();

%>

<html>

<head><title>현재 시간</title></head>

<body>

현재 시각:

<%= now %>

</body>

</html> 


실행을 해보시면 위 예제에서 '현재 시각' 이라는 부분이 글자가 제대로 표현이 안되는것을 확인 할 수 있습니다.


그리고 마우스 오른쪽 버튼을 클릭하시면 [인코딩] 이 보이는데 인코딩 들어가시면 서유럽어(ISO) 가 선택되어 있는것을 볼 수 있습니다. 그래서 '현재 시각' 이라는 한글이 제대로 표현이 안되는것 입니다.


한글로 제대로 표현을 할려면 위 예제에서 charset=iso-8859-1 을 charset=euc-kr로 변경해주시면 한글이 올바르게 나오는것을 확인할 수 있습니다.


다음 포스팅은 import에 대해서 알아보도록 하겠습니다.


Posted by 정윤문경아빠