android 레이아웃의 종류

안드로이드의 기본 화면 구성은 xml파일을 통해서 이루어진다.
그리고 각 xml파일 내에 1개 이상의 레이아웃을 집어 넣어서 화면을 구성한다.

레이아웃의 종류는 LinearLayout, RelativeLayout, AbsoluteLayout, FrameLayout, TableLayout, ScrollLayout 들이 있다.

1. LinearLayout
?? 수직 or 수평 으로된 레이아웃
?? LinearLayout 내에 또다른 레이아웃이나 위젯을 넣을 경우 모두 일직선상에 놓인다.
?? 사용 방법 참조?: http://johoonx2.tistory.com/139

2. RelativeLayout
?? 상대적인 위치를 이용해 구현하는 레이아웃
?? 사용 방법 참조 : http://gimbonggu.blog.me/90111370980
?????????????????????????????? http://blog.naver.com/q1q3q5?Redirect=Log&logNo=10099495708

3. AbsoluteLayout
?? RelativeLayout 과는 다르게 절대적인 위치를 이용해 구현하는 레이아웃
?? 사용 방법 참조 :? http://blog.naver.com/q1q3q5?Redirect=Log&logNo=10099495708

4. FrameLayout
?? 레이아웃 내에서 생성된 레이아웃이나 위젯이 모두 왼쪽 상단에 들어가게된다.
?? 화면은 가장 마지막에 불러온 레이아웃이나 위젯이 중첩되어 보이게 된다.
?? 사용 방법 참조 :? http://croute.me/412

5. TableLayout
?? 테이블, 즉 표 형태의 배열로 만들 수 있는 레이아웃이다.
?? <TableRow>등 과 같은 옵션을 사용하여 행/열을 지정할 수 있다
?? 사용 방법 참조 : http://blog.naver.com/eun033?Redirect=Log&logNo=140113081899

6. ScollLayout
?? 말 그대로 스크롤이 있는 레이아웃이다.
?? 내용물이 많으면 스크롤바가 생겨서 자동으로 스크롤이 된다.

Android ViewFlipper

메뉴화면으로 쓰이는 ViewFlipper 사용하기는 어렵지 않다.

1. ViewFlipper 구현 xml

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android
??? android:orientation=”vertical”
??? android:layout_width=”fill_parent”
??? android:layout_height=”fill_parent”
??? >
????<ViewFlipper
????? android:id=”@+id/flipper”
????? android:layout_width=”fill_parent”
????? android:layout_height=”fill_parent”
???? ?>
???? ?<LinearLayout
??????????? —-?첫번째?화면 ——-
???? ?</LinearLayout>

???? ?<LinearLayout
??????????? —-?두번째?화면 ——-
???? ?</LinearLayout>

????? <LinearLayout
??????????? —-?세번째?화면 ——-
????? </LinearLayout>
?? </ViewFlipper>
</LinearLayout>

위와 같이 ViewFlipper 안에 view 를 넣어 주면 순서대로 구성이 된다.
레이아웃이 아닌 textview와 같은 view들을 넣어도 된다.

2. 화면 전환시 애니메이션
res폴더 안에 anim이라는 폴더를 생성해서 넣어주면 된다.

[ push_left_in.xml ]
<?xml version=”1.0″ encoding=”utf-8″?>
?<set xmlns:android=”http://schemas.android.com/apk/res/android“>
?<translate android:fromXDelta=”100%p” android:toXDelta=”0%p” android:duration=”300″/>
?<alpha android:fromAlpha=”0.0″ android:toAlpha=”1.0″ android:duration=”300″ />
</set>

[ push_left_out.xml ]
<?xml version=”1.0″ encoding=”utf-8″?>
<set xmlns:android=”http://schemas.android.com/apk/res/android“>
?<translate android:fromXDelta=”0%p” android:toXDelta=”-100%p” android:duration=”300″/>
?<alpha android:fromAlpha=”1.0″ android:toAlpha=”0.0″ android:duration=”300″ />
</set>

[ push_right_in.xml ]
<?xml version=”1.0″ encoding=”utf-8″?>
<set xmlns:android=”http://schemas.android.com/apk/res/android“>
?<translate android:fromXDelta=”-100%p” android:toXDelta=”0%p” android:duration=”300″/>
?<alpha android:fromAlpha=”0.0″ android:toAlpha=”1.0″ android:duration=”300″ />
</set>

[ push_right_out.xml ]
<?xml version=”1.0″ encoding=”utf-8″?>
<set xmlns:android=”http://schemas.android.com/apk/res/android“>
?<translate android:fromXDelta=”0%p” android:toXDelta=”100%p” android:duration=”300″/>
?<alpha android:fromAlpha=”1.0″ android:toAlpha=”0.0″ android:duration=”300″ />
</set>

3. java파일

public class MyViewFlipper extends Activity
??????implements View.OnTouchListener {

??? ViewFlipper flipper;
????
??? float xAtDown;
??? float xAtUp;
????
??? @Override
??? public void onCreate(Bundle savedInstanceState) {
??????? super.onCreate(savedInstanceState);
??????? setContentView(R.layout.main);
????????????????
??????? flipper = (ViewFlipper)findViewById(R.id.viewFlipper);
??????? flipper.setOnTouchListener(this);
????????
?????? //동적으로 화면하나 추가
????????TextView tv = new TextView(this);
??????? tv.setText(“View 4\nDynamically added”);
??????? tv.setTextColor(Color.CYAN);
??????? flipper.addView(tv);??????
??? }

?public boolean onTouch(View v, MotionEvent event) {
??if(v != flipper) return false;??
??
??if(event.getAction() == MotionEvent.ACTION_DOWN) {
???xAtDown = event.getX();? //처음 터치 위치 저장
??}
??else if(event.getAction() == MotionEvent.ACTION_UP){
???xAtUp = event.getX();??? //터치 끝 위치 저장
???
???if( xAtUp < xAtDown ) {
????????flipper.setInAnimation(AnimationUtils.loadAnimation(this,
????????? ??R.anim.push_left_in));
????????? flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
????????? ??R.anim.push_left_out));
????????????
????????flipper.showNext();
???}
???else if (xAtUp > xAtDown){
???????flipper.setInAnimation(AnimationUtils.loadAnimation(this,
????????? ??R.anim.push_right_in));
????????? flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
????????? ??R.anim.push_right_out));
?????????flipper.showPrevious();???
???}
??}??
??return true;
?}

 

안드로이드 Manifest.xml

안드로이드 애플리케이션의 가장 기본이 되는 부분은 프로젝트 디렉토리 루트에 위치한 AndroidManifest.xml파일이다. 이 파일 내부에 프로젝트에서 생성하려는 애플리케이션이 어떤 기능, 다시 말해서 액티비티인지 서비스인지 등을 정의한다. 뿐만 아니라 애플리케이션이 안드로이드 시스템에 어떻게 연결되는지에 대한 정보도 들어간다.

– 권한, 기본 연동 요소, 애플리케이션 –

- uses-permission
어느 정도의 권한을 확보해야 애플리케이션이 제대로 동작하는지를 지정한다.

- permission
외부 액티비티나 서비스가 내부 테이터나 기능을 사용하고자 할 때 필요한 권한을 지정한다.

- instrumentation
액티비티가 실행되는 등의 주요 시스템 이벤트가 발생했을 때 애플리케이션의 어느 부분을 호출할지를 지정한다. 주로 기록을 남기거나 모니터링을 할 때 유용한다.

- uses-library
지도 서비스처럼 추가로 연동되는 안드로이드 컴포넌트를 지정한다.

- uses-sdk
애플리케이션을 어느 버전의 안드로이드 환경에서 사용할 수 있는지 알려줄 수 있다.

- application
실제 어플리케이션과 관련되 내용이 들어간다.

Manifest 파일에서 가장 중요한 부분은 뭐니뭐니해도 바로 application 엘리먼트다.

안드로이드 프로젝트를 생성하면 기본적으로 다음과 같이 하나의 activity 엘리먼트가 들어간다.

?<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android
????? package=”com.holim.test”
????? android:versionCode=”1″
????? android:versionName=”1.0″>
??? <application android:icon=”@drawable/icon” android:label=”@string/app_name”>
??????? <activity android:name=”.MyView”
????????????????? android:label=”@string/app_name”>
??????????? <intent-filter>
??????????????? <action android:name=”android.intent.action.MAIN” />
??????????????? <category android:name=”android.intent.category.LAUNCHER” />
??????????? </intent-filter>
??????? </activity>
???? </application>
??? <uses-sdk android:minSdkVersion=”7″ />
</manifest>

기본적으로 생성된 activity 엘리먼트를 보면 런처에 액티비티가 노출되고, 사용자가 해당 액티비티를 선택해 실행할 수 있게 한다.

필요하다면 하나 이상의 receiver 엘리먼트르 사용해 sms문자 메시지 수신과 같은 특정 상황에 액티비티가 아닌 다른 항목이 실행되게 할 수 있다.

provider 엘리먼트를 사용하면 하나 이상의 컨텐트 프로바이더를 정의할 수 있다. 컨텐트 프로바이더는 알다시피 내부 액티비티에 데이터를 제공하며, 적절한 권한을 같는 외부 액티비티에도 데이터를 제공한다.

SDK버전
개발한 애플리케이션이 특정 버전 또는 특정 버전 이상의 환경에서만 동작하도록 제한하려면 uses-sdk 엘리먼트를 AndroidManifest.xml파일의 manifest엘리먼트 내부에 추가하자? uses-sdk 엘리먼트는 minSdkVersion 이라는 하나의 속성만을 사용하는데, 바로 해당 애플리케이션이 필요로 하는 최소한의 버전을 지정하는 값이다.
<uses-sdk android:minsdkversion=”7″ />
망약? uses-sdk 엘리먼트를 아예 지정하지 않았다면 minSdkVersion 의 값이 1인 것으로간주하고 동작한다.

Android Intent로 화면 이동하기

Android 화면 이동하려면

Intent 를 사용해서 이동할수 있다.

ex)
public class aaa extends Activity {
?? public void onCreate(Bundle savedInstanceStats){
????? super.onCreate();
????? setContentView(R.layout.aaa);

??????int num = 10;

??????Intent intent = new Intent(aaa.this, bbb.class);
??????intent.putExtra(“num”, num);?? //putExtra를 통하여 값을 전달할수 있다.
????? startActivity(intent);
}

리턴값을 받아오려면
startActivity대신? startActivityForResult를 사용하면 된다.

그리고 반드시 Manifest.xml에 등록해줘야 한다.
<activity android:name=”.bbb” android:screenOrientation=”portrait” />

추가 참조 사이트 : http://dynamide.tistory.com/1693
?????????????????????????????? ?http://dynamide.tistory.com/1702

Android 개발에 필요한 기본 요소들

Android 개발을 하려면? 무엇이 필요할까요?

첫째, JDK(Java Development Kit)?
? – 안드로이드의 기본 개발 언어가 자바이므로 먼저 설치해야한다.
?? ?다운로드 사이트 :? ????
??? (http://www.oracle.com/technetwork/java/javase/downloads/index.html/)
??? 다운로드 및 설치(환경변수설정)?참조 사이트 :? ?
??? (http://blog.naver.com/asjgi?Redirect=Log&logNo=70133525303)

둘째, Andorid SDK : 안드로이드 개발 툴
??? 다운로드 사이트 :
??? (http://dev.android.com)
??? 다운로드 및 설치 참조 사이트 :
??? 1. (http://netrance.blog.me/110119245934)
??? 2. (http://blog.naver.com/asjgi?Redirect=Log&logNo=70133527976)

셋째, Eclipse : 개발에 편리한 에디터
??? 다운로드 사이트 :
??? (www.eclipse.org/downloads)
???