2월, 2010의 게시물 표시

컨테이너 (TableLayout)

: 원하는 형태로 짜놓은 격자 모양의 구조에 위젯을 배치할 수 있다. 행이나 열의 개수도 물론 지정할 수 있고, 특정 열의 폭이 내용에 맞춰 늘어나거나 줄어드는 방법 등도 지정할 수 있다. 기본 개념과 속성 셀을 넣어서 행 만들기 <TableRow> ... android:layout_column="2" 세번째 열. android:layout_span="3" ... </TableRow> 늘이고, 줄이고, 숨기고 android:stretchColumns android:shrinkColumns android:collapseColumns

컨테이너 (RelativeLayout)

: 해당 컨테이너와 상위 컨테이너에 들어있는 위젯 간의 상대적인 관계를 통해 배치할 장소를 정하는 레이아웃이다. 개념과 속성 컨테이너를 기준으로 배치 android:layout_alignParentTop 위젯의 상단이 컨테이너 상단에 일치하게 배치한다. android:layout_alignParentBottom 위젯의 하단이 컨테이너 하단에 일치하게 배치한다. android:layout_alignParentLeft 위젯의 왼쪽이 컨테이너 왼쪽에 일치하게 배치한다. android:layout_alignParentRight android:layout_centerHorizontal android:layout_centerVertical android:layout_centerInParent 기준위젯 표시 1.참조해야 하는 위젯에 android:id 속성으로 이름을 지정한다. 2.다른 위젯을 참조해 불러오려면 더하기 기호 없이 @id/... 과 같은 형태로 다른 위젯의 이름을 지정한다. 별도의 위젯을 기준으로 배치 android:layout_above android:layout_below android:layout_toLeftOf androdi:layout_toRightOf 정렬 방법 android:layout_alignTop android:layout_alignBottom android:layout_alignLeft android:layout_alignRight android:layout_alignBaseline 참조 순서 현재 위젯보다 아래쪽에 정의돼어있어서 아직 읽지 않은 위젯은 참조할 수 없다.

컨테이너 (LinearLayout)

: 위젯이나 다른 하위 컨테이너가 가로나 세로 방향으로 하나씩 차례로 정렬되는 레이아웃을 지원한다. 자바의 FlowLayout이나 XUL 또는 플렉스의 vbox,hbox등과 유사하게 동작한다. 개념과 속성 orientation : 클래스를 가로로 배열할지 세로로 배열할지를 의미한다. android:orientation 가로 horizontal 세로 vertical fill model : 125px 처럼 위젯 폭을 직접 지정할 수 있다. wrap_content 해당 위젯 내용을 모두 표시할 수 있을 만큼의 크기까지 공간을 차지한다. fill_parent : 상위 컨테이너의 나머지 위젯이 사용하고 남은 공간 모두를 차지하도록 배치된다. weight : 속성은 남은 공간 가운데 어느 비율만큼의 공간을 특정 위젯에게 할당할지를 지정하는 값이다. gravity : 정렬 방법 android:layout_gravity left, center_horizontal, right padding : 여백 설정 android:padding 상하좌우 android:paddingTop, android:paddingBottom, android:paddingLeft, android:paddingRight

안드로이드 프로그램 구조

액티비티 사용자 인터페이스를 작성할 때는 액티비티라는 구성요소를 활용한다. 데스크탑 애플리케이션에서 윈도우 또는 대화상자라고 부르는 요소와 비슷하다고 볼 수 있다. 컨텐트 프로바이더 컨텐트 프로바이더는 기기에 들어 있는 각종 데이터에 대한 추상적인 인터페이스를 제공하며, 여러 애플리케이션이 사용할 수 있다. 안드로이드 개발 모델은 애플리케이션이 사용하는 데이터를 해당 애플리케이션뿐만 아니라 다른 애플리케이션에서도 사용할 수 있도록 열어주는 편이 좋다고 권장한다. 컨텐트 프로바이더를 구성하면 데이터에 대한 통제권은 충분히 확보한 상태에서 이와 같이 개발 중인 애플리케이션뿐만 아니라 다른 애플리케이션에서도 접근 가능하도록 기능을 제공할 수 있다. 인텐트 인텐트는 기기 내부를 쭉 훑으면서 특정 이벤트가 발생했다는 사실을 각 애플리케이션에 알려주는 시스템 메시지다. 예를 들어 하드웨어 상태가 변경되거나, 외부에서 데이터를 수신하거나, 특정 애플리케이션에서 발생하는 이벤트를 모두 포함한다. 각 애플리케이션은 인텐트에 대응할 수 있을 뿐만 아니라, 인텐트를 생성해 다른 액티비티를 싱핼하거나, 아니면 특정 조건에 대한하는 상황인지를 확인할 수도 있다. 서비스 액티비티나 컨텐트 프로바이더, 인텐트 리시버 등은 모두 필요한 시간 동안만 동작하는 구성 요소이고, 언제고 종료도리 가능성이 있다. 이와 반대로 서비스는 필요한 경우 종료되지 않고 특정 액티비티와 관계없이 항상 동작하도록 만들어진 구성 요소다. RSS 피드에 업데이트된 내용이 있는지 확인하는 서비스도 만들어 낼 수 있겠고, MP3 음악을 선택하는 액티비티가 종료돼도 백그라운드에서 계속해서 음악을 틀어주는 기능도 서비스에 해당된다.

진짜로 이기는것은....

소설 손자병법을 읽었다. 전쟁은 이미 이긴것을 확인하는 것이라는 말에 충격을 받았다.. 현재 나도 타인과 시시비비가 잦은 편이다. 하지만 그들과 시비를 가려 이겼다고 해서 남는게 하나도 없는 게임을 하고 있다... 문뜻 난 지는 게임을 하고 있는것이 아닌가 생각이 든다.   한번쯤 꼭 읽어야 한다. 손자병법이 과거의 병법서로 치부할게 아니라 현재를 사는 우리에게 잦은 다툼과 전쟁속에서 살아 남는 법을 가르쳐 주는 현대의 병법서라고 해도 과언이 아니다.

안드로이드 main.xml코드를 분석하자

<?xml version="1.0" encoding="utf-8" ?> <LinerLayout xmlns:android= http://schemas.android.com/apk/res/android android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>   android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" 레이아웃의 배치, 넓이 높이를 정의한다.   android:layout_width="fill_parent" android:layout_height="wrap_content" TextView의 넓이와 높이를 정의한다. android:text="@string/hello" TextView에 넣을 문자열을 제공한다.

안드로이드 HelloWorld 소스 코드 분석

package com.oreilly.helloworld;   import android.app.Activity; import android.os.Bundle;   public class HelloWorldActivity extends Activity{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); } }   필요한 라이브로리 import savedInstanceState는 액티비티간 데이터 교환하는 수단

안드로이드 생명주기

extends Activity onCreate() 엑티비티가 처음 생성될 때 호출된다. 뷰를 만들고 지속적으로 필요한 데이터 파일을 여는 등 일반적으로 액티비티 초기화를 하는 메소드다. onCreate를 호출할 때 안드로이드는 과거에 실행했던 액티비티의 상태를 저장하고 있는 Bundle이라는 오브젝트를 받는다. onStart() 액티비티가 화면에 보이기 직전에 호출된다. onStart가 종료했을 때 액티비티가 화면 포어그라운드에서  실행될 수 있다면 onResume가 호출된다. 간혹 포어그라운드 실행이 불가능하다면 onStop메소드가 호출된다. onResume() 액티비티가 포어그라운드에서 실행되면 onStart 바로 직후에 onResume메소드가 호출된다. 이 시점에서부터 액티비티는 사용자의 입력을 받을 수 있는 상태로 실행된다. 키보드와 터치를 통한 사용자 입력을 받으며 사용자 인터페이스가 화면에 보이게 된다. 다른 액티비티가 실행되면 화면에서 사라졌다가 해당 액티비티가 종료돼 원래의 액티비티가 다시 포어그라운드로 돌아올 때도 onResume이 호출된다. onResume에서 액티비티가 사용자 인터페이스를 업데이트할 때 필요한 작업을 시작하거나 재개하게 된다. 사용자 인터페이스 업데이트 예로 위치 정보 업데이트 또는 애니메이션 보이기 등을 들 수 있다. onPause() 안드로이드가 다른 액티비티를 재실행해서 포어그라운드로 띄우려는 순간 기존 액티비티에게 onPause메소드가 호출된다. 이 순간에는 원래 실행하던 액티비티는 화면에 보이지 않으므로 배터리를 소모하거나 CPU를 불필요하게 사용하는 작업을 멈춰야 한다. 예를 들어, 애니메이션을 보여주고 있다면 onPause 이후에는 어차피 아무도 못 보기 때문에 이 작업을 멈췄다가 나중에 화면을 다시 돌려받을 때 재개하는 편이 낫다. 이 메소드에서는 나중에 포어그라운드로 복귀할 때를 대비해 액티비티의 상태를 저장해두면 좋다. 그러나 액티비티가 다시 포어그라운드로 복귀한다

안드로이드, 이클립스 툴

열심히 익히자~~ 화팅~~