지금까지의 내용들은 구글 안드로이드와 함께 제공되는 문서 위주로 정리가 되었다. 하지만, 이제부터는, 본인이 직접 내 입맛에 맞게 각 API에 대해서 작성할 예정이다. 혹시 나머지 Document부분의 번역을 원하시는 분들이 많을 경우 추가로 작성할 예정이다.


이제 연습용 메인 프로젝트를 만들어 보자. 이클립스에서 New Project를 선택해서 Android Project를 만들자.

프로젝트 명은 AndroidAPISummary, 패키지 이름은 com.min.summary , 메인이 되는 액티비티 이름은 AndroidAPISummary, 그리고 안드로이드에서 아이콘에 나타나는 이름은 API Summary 로 정하자. 마지막에 있는 애플리케이션이름만 공백 사용이 가능하다.

Finish 버튼을 누르자. 그러면, HelloAndroid와 같이 여러개의 파일이 생성될 것이다.


참고로 나는 SWT, GWT, Swing등을 사용했기 때문에 화면 레이아웃을 XML로 처리하는 것에 적응이 되어 있지 않다. 대부분의 화면단 개발자 분들이 그러하듯이... 그리고, 안드로이드의 대부분 샘플들도 모두 XML로 화면처리를 했기 때문에 나는 소스에서 화면 구성하는 방법으로 정리를 하도록 하겠다.


가장 먼저 AndroidAPISummary 클래스를 열어서 다음과 같이 수정하자. 아래에 굵게 표시한 부분만 추가된 내용이다.

package com.min.summary;

import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.Button;

public class AndroidAPISummary extends Activity {
    LinearLayout  linearLayout;
    LayoutParams lpFillWrap=new LinearLayout.LayoutParams
        (LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
       linearLayout=new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        for(int loop=0;loop<20;loop++) {
            Button but=new Button(this);
            linearLayout.addView(but, lpFillWrap);
            but.setText("Button"+loop);
        }
        setContentView(linearLayout);

    }
}

일단 가장 간단한 LinearLayout을 사용하였고,
LayoutParams 라는 클래스의 객체는 LinearLayout에서 View를 추가할 때 필요하기 때문에, 클래스 변수로 지정하여 재사용 하도록 했다.
onCreate() 메소드에서 linearLayout 객체를 초기화 하고, 세로 정렬하도록 setOrientation() 메소드를 사용하여 LinearLayout.VERTICAL 변수를 지정하였다.
(참고로 LinearLayout.HORIZONTAL 로 지정하면 가로로 정렬하게 된다.)
그 다음엔 for 루프를 사용해서 Button을 20개 만들어 linearLayout에 추가하였다. addView() 메소드를 사용하여 추가할 때에는 LayoutParams 로 반드시 어떻게 추가할지를 결정해야 한다. 그리고 버튼 객체에 setText() 메소드를 사용하여 버튼에 나타나는 글자를 표시하도록 했다.
마지막에는 linearLayout를 setContentView() 메소드를 사용하여 화면에 나타나도록 지정했다.

그러면 이렇게 만든 화면을 수행하면 어떻게 되는지 결과 화면을 보자.

이렇게 버튼을 20개나 만든 이유는 여러분들에게 중요한 한가지를 보여주기 위함이다. 화면이 나타난 상태에서 스크롤을 해보자.

아마 선택된 주황색 표시가 없어질 것이다.

즉 스크롤이 안된다는 의미가 된다. 그냥 이대로 사용하게 되면, 버튼들이 추가되거나, 데이터가 추가되면 스크롤이 안되는 안습상황이 발생하게 될 것이다.

그래서 필요한 것이 ScrollView 다.

package com.min.summary;

import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.Button;
import android.widget.ScrollView;

public class AndroidAPISummary extends Activity {
    LinearLayout  linearLayout;
    LayoutParams lpFillWrap=new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
        LayoutParams.WRAP_CONTENT);
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        ScrollView sv=new ScrollView(this);
        linearLayout=new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        for(int loop=0;loop<20;loop++) {
            Button but=new Button(this);
            linearLayout.addView(but, lpFillWrap);
            but.setText("Button"+loop);
        }
       sv.addView(linearLayout,lpFillWrap);
        setContentView(sv);
    }
}

변경된 소스와 같이 ScrollView를 import하고, ScrollView를 추가하면 된다.

그럼 이렇게 했을때 결과를 보자.

이제 스크롤을 해보면 아래에 화면이 있으면 어둑어둑하게 표시가 되면서 스크롤이 부드럽게 될 것이다.

내용이 너무 많으면 지겨우니, 추가적인 내용은 다음 post에 올리도록 하겠다.

Posted by tuning-java