반응형

액션바(Action Bar)는 앱의 액티비티에서 구현할 수 있는 가장 중요한 디자인 요소 중 하나입니다. 액션바는 다른 앱들 사이에 일관성을 제공함으로서 사용자에게 친숙한 형식의 앱을 만들 수 있는 다양한 사용자 인터페이스 기능을 제공합니다.


주요 기능:

° 앱에서 사용자의 위치와 정체성을 제공하고 표시하기 위한 전용공간

° 잘 알려진 방법으로 중요한 작업에 접근할 수 있습니다.( 예 : 검색)

° 탐색과 보기 전환을 지원합니다.(탭 또는 드롭 다운 목록)


 


이 포스트는 액션바의 기본적인 사용을 위한 간단한 가이드를 제공합니다. 액션바의 다양한 기능을 알고 싶다면 개발자 사이트의 Action Bar 가이드를 참고하시기 바랍니다.


액션바 만들기

 여러분의 액티비티에 기본적인 액션바를 추가하는 방법을 배우게 됩니다. 여러분이 Android 3.0 이상 이거나 또는 Android 2.1 처럼 낮은 버전에서도 지원되록 할 겁니다.( Android Support Library를 사용하여)


액션 버튼들 추가하기

 액션바에 사용자 액션에 응답하도록 추가하는 방법을 배우게 됩니다.


액션바 꾸미기(Styling)

 액션바를 사용자가 원하는 모양으로 보이게 하는 방법을 배우게 됩니다.


액션바 덧붙이기

 여러분 레이아웃의 전면에 액션바를 덧붙이는 방법을 배우게 됩니다. 액션바를 숨기는 경우 원활한 전환을 허용하도록 합니다.

반응형
반응형

두번째 액티비티 만들기

-----------------------------


액티비티의 모든 서브클래스들은 반드시 onCreate() 메소드를 구현해야만 합니다. 이 메소드는 액티비티가 메세지를 가지고 있는 인텐트를 받는 지역입니다. 또한 onCreate() 메소드는 반드시 setContentView() 메소드를 통해 액티비티 레이아웃을 정의해야만 합니다. 이 메소드는 액티비티 컴포넌트의 초기값을 설정하는 지역입니다.



안드로이드 스튜디오를 사용하여 새로운 액티비티 만들기


Android Studio는 여러분이 프로젝트를 만들 때 onCreate() 메소드를 오버라이드 해 놓습니다.


1. Android Studio 에서 java 디렉토리의 'com.mycompany.myfirstapp' 패키지를 선택하시고 마우스 오른쪽 버튼을 클릭합니다. 이어서 New > Activity > Blank Activity 를 선택합니다.


2. Choose option 창에서 액티비티 세부사항을 채웁니다.


° Activity Name : DisplayMessageActivity

° Layout Name : activity_display_message

° Title : My Message

° Hierarchical Parent : com.mycompany.myfirstapp.MyActivity

° Package name : com.company.myfirstapp


Finish 버튼을 클릭합니다.


 그림 1. Android Studio의 새로운 액티비티 생성 마법사


3. DisplayMessageActivity.java 파일을 엽니다.

 이 클래스는 이미 onCreate() 메소드의 구현을 포함하고 있습니다. 여러분은 나중에 이 메소드의 구현은 업데이트 할 것입니다. 또한 이미ActionBar 를 핸들링 하는 onOptionsItemSelected() 메소드의 구현도 포함되어 있습니다. 우선 이 두 메소드는 그냥 두겠습니다.


4. onCreateOptionMenu() 메소드는 제거합니다. 이 앱에서는 이 메소드가 필요하지 않습니다.


 여러분들이 Android Studio를 사용하여 개발한다면 지금 앱을 실행할 수 있습니다. Send 버튼을 클릭하여 두번째 액티비티를 시작합니다. 하지만 특별한 것이 없습니다. 템플릿에 의해 제공된 기본 "Hello world" 레이아웃을 사용하고 있기 때문입니다. 여러분은 곧 하나의 custom text view 를 보여주도록 업데이트 할 겁니다.



안드로이드 스튜디오 없이 액티비티 만들기


만약 여러분이 다른 IDE 를 사용하거나 command line tools 를 사용한다면 아래를 실행 합니다.


1. 프로젝트의 src/ 디렉토리에 DisplayMessageActivity.java 라는 파일을 생성합니다. 

2. 파일에 아래 내용을 추가하세요.

 public class DisplayMessageActivity extends ActionBarActivity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_display_message);


        if (savedInstanceState == null) {

            getSupportFragmentManager().beginTransaction()

                .add(R.id.container, new PlaceholderFragment()).commit();

        }

    }


    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        // Handle action bar item clicks here. The action bar will

        // automatically handle clicks on the Home/Up button, so long

        // as you specify a parent activity in AndroidManifest.xml.

        int id = item.getItemId();

        if (id == R.id.action_settings) {

            return true;

        }

        return super.onOptionsItemSelected(item);

    }


    /**

     * A placeholder fragment containing a simple view.

     */

    public static class PlaceholderFragment extends Fragment {


        public PlaceholderFragment() { }


        @Override

        public View onCreateView(LayoutInflater inflater, ViewGroup container,

                  Bundle savedInstanceState) {

              View rootView = inflater.inflate(R.layout.fragment_display_message,

                      container, false);

              return rootView;

        }

    }

}


Note: 만약 Android Studio 외에 다른 IDE 를 사용하신다면, setContentView() 메소드의 매개변수에 요구되어 있는activity_display_message 레이아웃을 포함하고 있지 않을 겁니다. 괜찮습니다. 왜냐하면 여러분은 나중이 이 레이아웃을 사용하지 않도록 업데이트 할 것이기 때문입니다.


3. strings.xml 파일에 아래처럼새로운 액티비티의 제목 텍스트를 추가합니다.

 <resources>

    ...

    <string name="title_activity_display_message">My Message</string>

</resources>



4. AndroidManifest.xml 메니페스트 파일의 Application 요소 안에 DisplaymessageActivity 에 대한 <activity> 요소를 추가합니다.

 <application ... >

    ...

    <activity

        android:name="com.mycompany.myfirstapp.DisplayMessageActivity"

        android:label="@string/title_activity_display_message"

        android:parentActivityName="com.mycompany.myfirstapp.MyActivity" >

        <meta-data

            android:name="android.support.PARENT_ACTIVITY"

            android:value="com.mycompany.myfirstapp.MyActivity" />

    </activity>

</application>


android:parentActivityName 속성에 앱의 논리적 상속구조안에서 액티비티 부모의 이름을 선언합니다. 시스템은 Android 4.1(API16) 버전 이상에서 Up navigation 같은 기본 navigation 행동을 구현하기위한 값을 사용합니다. 여러분은 Support Library 의 사용과 <meta-data>요소의 사용을 통해 Android Studio의 예전 버전에서도 같은 navigation 기법을 사용할 수 있습니다.


Note : 여러분의 안드로이드 SDK 는 Adding SDK Package 단계에서 이미 최신버전의 Android Support Library 를 포함하도록 되어 있습니다. 안드로이드 스튜디오의 탬플릿을 사용한다면 이미 자동으로 여러분의 프로젝트에 Support Library 가 추가되어 있습니다. 여러분이 프로젝트에 library 를 추가하고 조작할 필요가 있다면 개발자 사이트의 setting up the Support Library 가이드를 따라해 보시고 오시기 바랍니다.


 만약 여러분이 Android Studio 외에 다른 IDE 를 사용하신다면 아직 앱이 컴파일하지 않는 것에 대해 걱정하지 마세요. 여러분은 곧 하나의 custom text view 를 보여주로록 액티비티를 업데이트 할 것입니다.




인텐트 받기(얻어오기)

--------------------------

모든 Activity 는 어떤 방식으로 전달되든 Intent 에 의해 발동됩니다. 여러분은 getIntent() 라는 메소드를 호출함으로서 액티비티를 시작했던 인텐트를 얻을 수 있습니다. 그리고 인텐트 안에 포함되어 있는 데이터를 되찾아 올 수 있습니다.


1. java/com.mycompany.myfirstapp 디렉토리의 DisplayMessageActivity.java 파일을 작성합니다.

2. onCreate() 메소드에서 아래 명령 줄을 제거합니다.

 setContentView(R.layout.activity_display_message);


3. 인텐트를 얻어오고 지역변수에 할당합니다.

 Intent intent = getIntent();


4. 파일의 가장 위해 Intent 클래스를 임포트 합니다.

 안드로이드 스튜디오에서는 Alt+Enter(Mac 에서는 option+return) 을 통해 자동으로 미스된 클래스들을 임포트 합니다.


5. getStringExtra() 메소드를 통해 MyActivity 로 부터 전달된 message 를 추출합니다.

 String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);




메세지 디스플레이 하기

-----------------------------

1. onCreate() 메소드안에 TextView 객체를 생성합니다.

 

  TextView textView = new TextView(this);

 


2. text 의 사이즈를 설정하고 setText() 로 메세지를 설정합니다.

 

 

   textView.setTextSize(40);

  textView.setText(message);

 


3. 그리고 나서 TextView 를 setContentView() 메소드의 매개변수로 전달하여 액티비티 레이아웃의 root View 로서 추가합니다.

  setContentView(textView);


4. DisplayMessageActivity  onCreate() 를 완성하면 아래처럼 보입니다.

 @Override

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

    // Get the message from the intent
    Intent intent = getIntent();
    String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);
}


 여러분은 지금 앱을 실행시킬 수 있습니다. 앱이 실행되면 Text field(EditText)에 메세지를 타이핑하고 Send 버튼을 클릭합니다. 그리고 나면 두번째 액티비티에 메세지가 나타납니다.


 


그림 2. Android 4.4 에서 실행한 두개의 액티비티 화면


이것으로 여러분은 첫번째  안드로이드 앱을 만들어 봤습니다.


다음 포스트에서 다음 내용을 배워보겠습니다.

반응형
반응형

 이전 포스트의 내용을 완료하고 나면 여러분은 하나의 텍스트필드(EditText) 와 하나의 버튼을 가지고 있는 액티비티(한 화면)를 보여주는 앱이 있습니다. 이번 시간에, 여러분은 사용자가 Send 버튼을 클릭했을 때 새로운 액티비티를 실행하도록 하기 위해 MyActivity 에 몇가지 코드를 추가할 것입니다. 

 

Send 버튼에 응답하기

-----------------------

 안드로이드 스튜디오에서, res/layout  디렉토리의 activity_my.xml 파일을 작성합니다.

<Button> 요소에 android:onClick 속성을 추가합니다.

 

 res/layout/activity_my.xml

 <Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/button_send"

android:onClick="sendMessage" />

 

 

 android:onClick 속성의 값, "sendMessage", 는 사용자가 버튼을 클릭했을때 시스템이 호출하는 액티비티안에 있는 메소드의 이름입니다.

 java/com.mycompany.myfirstapp 디렉토리안에 MyActivity.java 파일을 열겠습니다.

 MyActivity 클래스 안에 아래 보여지는 sendMessage() 를 추가합니다.

 

java/com.mycompany.myfirstapp/MyActivity.java

 /** Called when the user clicks the Send button */

 public void sendMessage(View view) {

     // Do something in response to button

 }

 

 

시스템이 호출을 하기 위해서는 android:onClick 속성에 주어졌던 메소드의 이름과 같아야 합니다. 이 메소드는 작성 방식이 반드시 위해 보여진 것과 정확히 맞아야 합니다. 

° 접근제한자는 public 이어야만 함

° 리턴타입은 void 이어야 함

° 파라미터는 오직 View 만 가능함(클릭된 View 입니다)

 

다음으로, 여러분은 텍스트필드(EditText)의 내용물을 읽고 이를 다른 액티비티에 전달하기 위해 이 메소드를 채우게 됩니다.

 

인텐트(Intent) 만들기

----------------------------

1. MyActivity.java 파일의 sendMessage() 메소드 안쪽에 DisplayMessageActivity 라고 불려지는 액티비티를 실행하기 위해 하나의 아래의 코드를 따라 Intent 를 만들어 냅니다.

 

java/com.mycompany.myfirstapp/MyActivity.java

 public void sendMessage(View view) {

     Intent intent = new Intent(this, DisplayMessageActivity.class);

 }

 

Note : 만약 여러분이 Android Studio 같은 IDE를 사용한다면, DisplayMessageActivity 에 에러가 나타날 겁니다. 왜냐하면, 아직 이 클래스가 존재하지 않기 때문입니다. 지금은 이 에러를 무시하세요. 곧 이 클래스 만들 겁니다.

 

생성자는 두개의 파라미터를 사용하고 있습니다.

° 첫 번째 파라미터 : Context ( this 라고 쓴 이유는 Activity가 Context 의 서브 클래스 이기 때문입니다.)

° 두 번째 파라미터 : 시스템이 Intent 를 전달하기 위한 앱 컴포넌트 클래스

 

 

 Intent

 인텐트는 실행할 때 서로 다른 컴포넌트(두개의 액티비티 같은)를 사이를 연결하는 객체입니다. 인텐트는 앱의 "무언가를 하기 위한 의도" 를 나타냅니다. 여러분은 광범위하고 다양한 작업들에 인텐트들을 사용할 수 있습니다. 하지만 대부분 인텐트들은 다른 액티비티를 실행하는 용도를 사용하게 됩니다. 추가적인 정보를 알고 싶다면, 개발자 사이트의 Intent and Intent Filters 를 보시기 바랍니다. 

 

 

안드로이드 스튜디오는 여러분이 반드시 Intent 클래스를 import 하도록 표시합니다.

 

 

2. 파일의 가장 위에 Intent 클래스를 import 합니다.

 

java/com.mycompany.myfirstapp/MyActivity.java

  import android.content.Intent;

 

Tip: Android Studio에서 Alt+Enter(Mac 에서는 option+return) 을 누르면 자동으로 필요한 클래스를 import 합니다.

 

 

3. sendMessage() 메서드 안쪽에 findViewById() 를 사용하여 EditText 요소를 얻어옵니다.

 

java/com.mycompany.myfirstapp/MyActivity.java

 

  public void sendMessage(View view) {

     Intent intent = new Intent(this, DisplayMessageActivity.class);

     EditText editText = (EditText)findViewById(R.id.edit_message);

 }

 

 파일의 가장 위에 EditText 클래스를 임포트 하세요.

Android Studio에서 자동으로 필요한 클래스를 import 하기위해 Alt+Enter(Mac 에서는 option+return) 을 누르세요.

 

text를 message 지역변수에 할당합니다. 그리고 putExtra() 메소드를 사용하여 인텐트에 텍스트 값을 추가합니다.

 

java/com.mycompany.myfirstapp/MyActivity.java

 public void sendMessage(View view) {

     Intent intent = new Intent(this, DisplayMessageActivity.class);

     EditText editText = (EditText)findViewById(R.id.edit_message);

     String message = editText.getText().toString();

     intent.putExtra(EXTRA_MESSAGE, message);

 }

 

 

인텐트는 extra 라고 불려지는 key-value 쌍의 data 타입을 전달 할 수 있습니다. putExtra() 메소드는 첫번째 파라미터로 키 이름을, 두번째 파라미터로 을 가집니다.

 

 

6. MyActivity 클래스의 위쪽에 아래 처럼 EXTRA_MESSAGE 상수 정의를 추가합니다.

 

java/com.mycompany.myfirstapp/MyActivity.java

 public class MyActivity extends ActionBarActivity{

     public final static string EXTRA_MESSAGE = "com.mycompay.myfirstapp.MESSAGE";

     ...

}

 

 

 다음 액티비티에서 extra 데이터를 얻기위해, 여러분은 public 상수를 사용하여 인텐트의 extras에 대한 키를 정의 해야만 합니다.

위에 처럼 접두어로 앱의 패키지 이름을 사용하여 인텐트의 extra 키를 정의하는 것은 일반적으로 좋은 습관입니다. 이 방식은 다른 앱에서 여러분의 앱을 추출했을 때 유일한 식별자라는 것을 보증합니다.

 

 

7. 인텐트의 마지막 작업으로, sendMessage() 메소드 안에 스텝1에서 만들었던 인텐트 객체를 startActivity()메소드 호출하여 전달합니다.

 

 이 코드를 추가하여 아래 보이는 것처럼 Send 버튼에 의해 발동된 sendMessage() 메소드를 완성합니다.

 

java/com.mycompany.myfirstapp/MyActivity.java

public void sendMessage(View view) {

     Intent intent = new Intent(this, DisplayMessageActivity.class);

     EditText editText = (EditText)findViewById(R.id.edit_message);

     String message = editText.getText().toString();

     intent.putExtra(EXTRA_MESSAGE, message);

     startActivity(intent);

 }

 

 시스템은 이 메소드를 호출 받으면 Intent에 지정된 Activity 의 인스턴스를 시작합니다.

이제 여러분은 이 작업을 위해 DisplayMessageActivity 클래스를 만들 필요가 있습니다.

 

 다음 포스트에서 이어합니다.

반응형
반응형
Text Field( Text를 쓸수 있는 EditText) 추가하기

------------------------------------------

모든 View 객체와 마찬가지로 EditText 객체의 특징을 지정하기 위해 XML 에 속성들을 정의해야 만 합니다.


1. activity_my.xml 파일에서 <LinearLayout>의 요소로서 <EditText> 를 정의하고 id 속성을 "@+id/edit_message"로 지정하세요.

2. layout_widht 와 layout_height 속성은 "wrap_content" 로 정의하세요.

3. hint 속성은 'edit_message'로 이름지어진 문자열 객체(res/strings.xml 에 있는) 를 지정하세요.


<EditText> 요소는 아래처럼 되어 있어야 합니다.


res/layout/activity_my.xml

 <EditText android:id="@+id/edit_message"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:hint="@string/edit_message" />


<EditText>에 추가된 속성들 :


android:id

 이 속성은 여러분의 앱 코드(java파일)에서 객체를 참조해서 컨트롤하거나 읽어서 사용할 수있도록 하는 View에 대한 유일한 식별자를 제공합니다.(다음 단원에서 이 방법을 보실 겁니다.)


 기호는 여러분들이 XML로 부터 다른 resource 객체를 참조할 때 요구됩니다. 이어서 resource type을 지정합니다.(이번엔 id) 그리고 슬래시(/)하나를 쓰고 resource 이름을 직성합니다.(eidt_message)


 리소스 타입 전에 표시는 여러분이 리소스ID를 처음 주어질 때만 필요합니다. 여러분이 앱을 컴파일 할때, SDK tools는 EditText 요소를 참조하는 gen/R.java 파일안에 새로운 리소스 ID를 만들 때 이 ID 이름을 사용합니다. 리소스 ID가 선언된 것은 다른 것이 ID로 참조할 때 플러스 기호는 필요하지 않습니다. 플러스 기호는 오직 새로운 리소스 ID를 지정할 때만 필요합니다. 문자열이나 레이아웃들 같이 고정된 리소스의 값들은 필요하지 않습니다. 리소스 오브젝트에 대한 추가 정보는 아래 박스를 참고하세요.


 Resource Objects

 리소스 오브젝트는 bitmap, layout file, 또는 문자열 같은 조합된 앱 리소스의 정수형 이름입니다.


 모든 리소스는 여러분 프로젝트의 gen/R.java 파일에 리소스 오브젝트에 대응되어 있습니다. 여러분은 android:hint 속성에 대한 문자열 값을 지정할 필요가 있을 때와 같이 여러분의 리소스를 참고하기 위해 R 클래스에 오브젝트 이름을 사용할 수 있습니다. 또한 다른 코드로부터 view를 참조하기 위해 android:id 를 사용하고 있는 view와 조합하여 임의의 리소스 ID를 만들 수 있습니다.


 SDK tools 는 앱을 컴파일 할 때마다 R.java 파일에 자동으로 기록됩니다. 여러분들은 절대로 이 파일을 수정하시면 안됩니다. (실제로 수정되지도 않습니다.)


 추가정보를 원하시면 개발자 사이트의 Providing Resources 가이드를 읽어보시기 바랍니다. 

 


android:layout_width 와 android:layout_height

 width 와 height에 대한 사이즈 기입을 대신하여 "wrap_content" 값을 기입합니다. 이값은 뷰의 내용물을 감싸는데 필요한 만큼만 큰 뷰를 만들어 냅니다. 만약 이값을 "math_parent" 로 대체하면, EditText 요소는 부모뷰인 LinearLayout 의 사이즈를 맞추기 때문에 화면을 꽉 채우게 됩니다.  

 추가적인 정보를 원하시면 개발자 사이트의 Layouts 가이드를 참고하세요.


android:hint

 Text 영역이 비어있을 때 화면에 표시되는 기본 문자열 입니다. 다른 파일에 정의된 문자열 리소스를 참조하기 위해"@string/edit_message"를 직접 기입합니다. 왜냐하면 문자열 리소스는 고정된 값의 리소스 이기 때문입니다. 이것은 플러스 기호가 필요하지 않습니다. 어쨋든, 여러분이 아직 문자열 리소스를 정의하지 않았기 때문에 여러분들은 컴파일러 에러를 보게 될 겁니다. 여러분들은 다음 섹션에서 문자열을 정의함으로 이것을 확정할 것 입니다.

 

Note : 이 문자열 리소스는 ID:edit_message 요소로서 같은 이름을 가집니다. 어쨋든 리소스 참조는 항상 리소스 타입에 의해 범위가 스코프됩니다.(id 또는 string처럼) 그래서 같은 이름을 사용해도 충돌이 아닙니다.




Button 추가하기

-------------------------------

1. Android Studio에서 res/layout 디렉토리로 부터 activity_my.xml 파일을 작성합니다.

2. <LinearLayout> 요소 안에 <EditText> 요소에 바로 이어서 <Button> 요소를 정의합니다.

3. Button 의 width 와 height 속성에 "wrap_content" 를 설정합니다. 그래서 버튼은 항상 Button 의 Text 라벨을 감쌀 정도만의 사이즈를 가집니다.

4. android:text 속성은 이전 섹션에서 정의한  button_send 문자열 리소스의 값으로 Button 의 텍스트 라벨을 정의합니다.


여러분의 <LinearLayout>은 아래 처럼 보여야 합니다.


res/layout/activity_my.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="horizontal" >

      <EditText android:id="@+id/edit_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />

      <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />
</LinearLayout>


Note : 이 Button 은 activity 코드에서 참조하지 않기 때문에 android:id 가 필요하지 않습니다.


그림2에 보여지는 것처럼 , 레이아웃은 현재 EditText 와 Button 위젯들 둘다 그것들의 내용물을 감쌀 정도의 사이즈로 디자인 되어 있습니다.


 

그림 2EditText 와  Button 위젯은 그들의 폭을 "wrap_content" 로 설정되어 있습니다.


 이 작업은 사용자가 얼마나 길게 입력할 지 알 수 없기 때문에 button , Text field 모두 좋은 방식입니다. 이것은 Text field의 사용하지 않는 화면 폭을 채우는 좋은 방법입니다. 여러분들은 LinearLayout 이 가지고 있는 weight 특성을 android:layout_weight 속성을 사용하여 지정할 수 있습니다.


 weight 값은 뷰가 소비하고 남아있는 공간의 총합을 지정한 숫자 입니다. 같은 레이아웃 안에 있는 형제 뷰들에 의해 소비된 무게의 총합입니다. 이 작업은 음료수 레시피 " 소다 2, 시럽 1" 음료의 정수 총액과 같은 것입니다.  마치 2-3의 소다음료를 의미합니다.  예를들어, 한 뷰의 weight 이 2이고 다른 하나가 1 이라면 이 둘의 합은 3입니다. 그래서 첫번째 뷰가 2/3의 남은 공간을 가지게 되고 두번째 뷰가 남을 공간을 채웁니다. 만약 여러분이 세번째 뷰을 추가하고 weight 에 1을 주면, 첫번째 뷰(weight이 2인)는 남은 공간의 1/2를 갖게 되고, 남은 두 개의 뷰가 각 각 1/4씩 갖게 됩니다.


 모든 뷰의 기본 weight 값은 0 입니다. 그래서 혹시 어떤 weight 값도 0보다 큰 값이 없다면, 모든 뷰는 어디의 공간에서는 모두 같은 사이즈의 공간을 가지게 됩니다.



 Input Box 화면 폭 안에 꽉 채워 만들기 

--------------------------------------------------

EditText를 레이아웃의 남아있는 공간에 채우기 위해서는 아래의 내용을 따라합니다.


1. activity_my.xml 파일에서, <EditText>의 layout_weight 속성의 값을 1 로 배치하세요.

2. 또한, <EditText>의 layout_width 의 속성 값은 "0dp" 로 배치합니다.


res/layout/activity_my.xml

 <EditText

android:layout_weight="1"

android:layout_width="0dp"

...........  />

 


 여러분이 weight 을 지정했을 때 레이아웃의 효과를 증명하기 위해, 여러분은 반드시 EditText 의 width 를 제로(0)로 변경해야만 합니다. "wrap_content" 을 사용하면 시스템은 남았는 공간에 대한 다른 width 값을 계산하고 궁극적으로 상관없는 width를 계산하기 때문에 0으로 width 을 설정해만 레이아웃에 효과가 입증된다. 


그림 3은 EditText 에 모든 weight 배치했을 때의 결과를 보여 줍니다.


 

그림 3. 모든 layout weight이 주어진 EditText 위젯, 그래서 이것은 LinearLayout 의 남아있는 공간을 꽉 채웁니다.


아래 완성된 activity_my.xml 레이아웃 파일을 보겠습니다.


res/layout/activity_my.xml

 <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <EditText android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />
</LinearLayout>



앱 실행하기

----------------------------

 이 레이아웃은 여러분이 프로젝트를 만들 때 SDK tools가 자동으로 작성한 default Activity 클래스에 의해 적용되었습니다.

결과를 보기위해 앱을 실행합니다.


° Android Studio 에서 툴바에 있는 Run 을 클릭하세요.

° 또는 command line 에서는, 여러분의 안드로이드 프로젝트의 root 디렉토리로 변경하고 아래 명령을 실행합니다.

 ant debug

 adb install bin/MyFirstApp-debug.apk

 


 다음 포스트에서 버튼을 눌렀을 때 응답하는 방법, text field(EditText)로 부터 내용물을 읽어내는 방법, 다른 activity를 시작하는 방법과 추가적인 내용들을 계속이어서 진행하겠습니다.

반응형
반응형

이번 단원에서는 하나의 텍스트 영역과 하나의 버튼을 가지고 있는 XML파일을 만들게 됩니다. 여러분이 버튼을 누를 때 또 다른 화면 Activity의 텍스트 영역에서 응답하는 것은 다음 단원에서 다루겠습니다.


 안드로이드 앱의 그래픽 UI 는 View 와 ViewGroup 의 계층구조를 사용하여 만들어 집니다. View 객체는 일반적으로 버튼이나 텍스트 영역같은 UI 위젯을 말합니다. ViewGroup 객체는 차일드 뷰를 격자모양이나 수직 리스트 같이 어떻게 배치하는지 방법을 정의한 보이지 않는 뷰 컨테이너입니다.


 안드로이드는 View 와 ViewGroup 의 서브클래스에 해당하는 XML 표기법(태그)를 제공합니다. 그래서 UI 요소를 상속하여 XML 안에 여러분의 UI를 정의할 수 있습니다.


 Layout 은 ViewGroup 의 서브클래스 입니다. 이번에는 LinearLayout 을 가지고 작업해 보겠습니다. 



그림 1. 다른 View를 포함한 layout 트리구조의 ViewGroup 그림. 






Linear Layout 만들기

-----------------------------------

1. Android Studio에서 res/layout 디렉토리안에 있는 activity_my.xml 파일을 엽니다.

 여러분이 프로젝트를 만들 때 선택했던 BlankActivity 형태는 RelativieLayout root 뷰와 하나의 차일드 뷰로 TextView를 가지고 있는 activity_my.xml 파일을 포함하고 있습니다.


2. Preview pane에서, 감추기 아이콘을 클릭하여 Preview pane를 닫습니다.

 Android Studio에서는 레이아웃 파일을 열 때 우선적으로 프리뷰 페인을 보여줍니다. 이 페인의 요소들을 클릭하면 Design pane 안에 잇는 WYSIWYG 도구를 열게됩니다. 이번 시간에는 XML파일에 직접 작업을 할 겁니다. 


3. <TextView> 요소를 지우세요.

4. <RelativeLayout> 을 <LinearLayout>으로 변경하세요.

5. <LinearLayout> android:orientation 속성을 추가하고 "horizontal" 로 설정하세요.

6. android:padding  tools:context 속성을 제거하세요.


결과는 아래와 같습니다.


res/layout/activity_my.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="horizontal" >

</LinearLayout>


 LinearLayout 은 android:orientation 속성을 지정하여 수직 또는 수평하게 차일드 뷰들을 배치하는 하나의 뷰 그룹(ViewGroup클래스의 서브클래스) 입니다. LinearLayout의 각각의 차일드 뷰들은 XML에 써진 순서대로 화면에 나타납니다.


 android:layout_width 와 android:height 의 2개 속성은 모든 뷰들에게 그들의 사이즈를 지정하기 위해 요구됩니다.


LinearLayout은 레이아웃에서 root뷰(최상위 뷰) 이기 때문에 width와 height 을 "match_parent" 로 설정하여 반드시 화면 영역을 꽉 채워야 한다. 이 값은 부모뷰의 가로 세로에 매치하기 위해 뷰에 정의 되어야 합니다.


layout 특성들에 대해 자세히 알고 싶다면 개발자 사이트의 Layout guide를 보시기 바랍니다.

반응형
반응형

여러분들이 안드로이드 프로젝트를 만들기 위해 이전 포스트를 따라 했다면, 앱을 바로 실행하기위한 "Hello World" 소스파일을 포함하고 있을 겁니다.


여러분의 앱을 실행하는 두가지 방법 : 실제 안드로이드 단말기에서 하거나 Android Studio를 이용합니다.

 이번 포스트에서는 실제 단말기와 안드로이드 에뮬레이터에 install하고 실행시키는 방법을 보게 될 겁니다. 그리고 이를 Android Studio 와 Command line tools를 이용한 두가지 경우 모두 소개합니다.


실제 디바이스(안드로이드 폰이나 테블릿)에서 실행하기

--------------------------------------------

만약 실제 디바이스에서 실행하고자 한다면 어떻게 인스톨하고 실행하는지 소개하겠습니다.


단말기 설정

1.  개발에 사용되는 단말기에 USB cable 을 연결하세요. 만약 Windows 운영체제에서 개발하고 있다면 여러분의 단말기에 해당하는 USB 드라이버를 설치할 필요가 있을 수 있습니다.(각 단말기 회사의 홈페이지에서 제공하고 있습니다.)  드라이버 설치를 돕기위해 개발자 사이트의  'OEM USB Drivers' 문서를 참고하시기 바랍니다.


2. 여러분의 단말기에서 USB debugging 이 가능하도록 하세요.

 ° 안드로이드 3.2 거나 그 이하 대부분의 단말기는  옵션(Option) 메뉴에서 Setting(설정) > Application(응용프로그램) > Development(개발)  안에 있음.

 ° 안드로이드 4.0 이상에서는 Setting(설정) > Developer options(개발자 옵션)

  Note : 안드로이드 4.2 이상에서는 Developer options(개발자 옵션)이 기본적으로 숨겨 있습니다. 가능하도록 만들기 위해, Setting(설정) > About phone(핸드폰 정보)에서 마지막에 있는 Build number(빌드번호)를 7번 누르세요. 그리고 이전으로 돌아오면 Developer options(개발자 옵션) 를 찾으실 수 있습니다.



Android Studio 에서 앱 실행하기

1. 여러분의 프로젝트 파일들 중에 하나를 선택하고 도구모음에서 Run 버튼을 클릭하세요.

2. Choose Device 창이 나타나면, Choose a running device 라디오 버튼을 선택하고, 여러분의 단말기를 선택하고 OK 버튼을 클릭하세요.


Android Studion는 연결되어 있는 단말기에 앱을 설치하고 시작합니다.


command line 에서 앱 실행하기


1. 여러분의 안드로이드 프로젝트의 root 로 디렉토리를 변경하고 아래 실행 :

  ant debug


2. 여러분의 PATH 환경변수에 Android SDK  platform-tools/ 디렉토리를 만들고 실행 : 

  adb install bin/MyFirstApp-debug.apk

 


3. 여러분의 단말기에서 MyFirstApp location를 여세요.

 

여기까지 여러분의 앱을 디바이스에 빌드하고 실행하는 방법입니다. 개발을 시작하기 위해 다음 포스트에서 계속하겠습니다.




 

에뮬레이터(Emulator)에서 실행하기

------------------------------

 

 여러분이 Android Studio 를 사용하든 command line 을 사용하든, 여러분의 앱을 에뮬레이터에서 실행하기 위해 제일 먼저 Android Virtual Device(AVD) 가 필요합니다. AVD는 여러분이 선택한 특정 단말기의 모습을 한 장치입니다.


AVD 만들기

1. Android Device Manager 실행 :

 ° Android Studio 에서 Tools > Android > AVD Manager 선택하거나 툴바에서 AVD Manager icon  를 선택하세요.

 ° 또는, command line 에서 <sdk>/tools 로 디렉토리를 변경하고 실행 :   

  android avd

 

 Note : command line 으로 부터 실행될 때 나타나는 AVD Manager 는 Android Studio 의 버전과 다릅니다. 그래서 보여지는 명령이 적용되지 않을 수 도 있습니다.


  그림 1. 현재 존재하는 가상 머신(Virtual Devices)들이 보여지는 AVD Manager 메인 화면


2. AVD Manager 메인 화면에서(그림1), Create Virtual Device 를 클릭하세요.

3. Hardware 선택창에서, Nexus 6 같은 특정 디바이스를 선택하세요. 그리고 나서 Next 를 클릭하세요.

4. 희망하는 AVD의 시스템 버전을 선택하고 Next 를 클릭하세요.

5. 설정한 특성들을 확인하고 Finish 를 클릭하세요.  


AVDs 에 대한 자세한 정보는 개발자 사이트의  Managing AVDs with AVD Manager 를 참고하세요.


 

Android Studio 에서 앱 실행하기

1. Android Studion에서 여러분의 프로젝트를 선택하고 도구모음에서 Run 버튼을 클릭하세요.

2. Choose Device 창이 나타나면, Launch emulator 라디오 버튼을 클릭하세요.

3. Android virtual device 로 부터 나열된 menu에서 여러분이 만든 단말기를 선택하고 OK 버튼을 클릭하세요.


 에뮬레이터가 load 되는데 몇 분간 시간이 소요됩니다. 여러분이 화면을 풀면(스마트폰의 잠길 풀기 제스쳐) MyFirst 앱은 에뮬레이터의 화면에 나타날 것입니다.



command line 에서 앱 실행하기


1. 여러분의 안드로이드 프로젝트의 root 로 디렉토리를 변경하고 아래 실행 :

  ant debug


2. 여러분의 PATH 환경변수에 Android SDK  platform-tools/ 디렉토리를 만들고 실행 : 

  adb install bin/MyFirstApp-debug.apk

 


3. 여러분의 에뮬레이터에서 MyFirstApp location를 여세요.

 

 여기까지 여러분의 앱을 에뮬레이터에서 빌드하고 실행하는 방법입니다. 개발을 시작하기 위해 다음 포스트에서 계속하겠습니다.

반응형
반응형

이번 포스트의 배울 내용

--------------------------------------​

1.  Android Studio를 이용한 프로젝트 만들기

2.  Command Line(콘솔창)을 이용한 프로젝트 만들기

 

 안드로이드 프로젝트에는 안드로이드 앱의 소스코드를 구성하는 모든 파일을 포함하고 있습니다.

 

이번 장에서는  Android Studio 또는 커멘드 라인을 이용한 SDK  tools, 둘다 사용해서 새로운 프로젝트를 만들어 내는 방법을 보여주고자 합니다.

 

 Note :  여러분들은 이미 Android SDK가 설치되어 있어야 합니다. 혹시  Android Studio를 사용하고자 하신다면 당연히  Android Studio가 설치되어 있어야 하면, 혹시 이것들이 되어있지 않다면 이번장을 시작하기 전에 개발자 사이트의  'Installing the Android SDK'의 설치 가이드를 따라하시기 바랍니다. 

 

 

 Android Studio를 이용한 프로젝트 만들기

-----------------------------------

1.  Android Studio에서 프로젝트 새로 만들기

​    ° 프로젝트를 만들었던 적이 없다면 'Welcome' 화면에서 'New Project' 를 클릭하세요.

    ° 프로젝트를 만들었던 적이 있다면 'File' 메뉴에서 'New Project' 를 선택하세요.​

2.​ 아래 그림1에 보여진것처럼 'Configure your new project' 의 항목들을 기입하고 'Next' 버튼을 클릭하세요.

​ 그림 1. Configuring a new project in Android Studio

그림1에​ 보여지는 값과 같은 값을 사용하시면 이번장을 따라하시기 쉬울겁니다.

 ​° Application Name  은 사용자에거 보여지는 앱의 이름입니다. 여기서는 " My First App"을 사용합니다.

 ° Company domain 은 패키지 이름에 추가되는 규칙으로 제공됩니다. 안드로이드 스튜디오는 여러분이 만든 각각의 새로운 프로젝트마다 이 이름을 기억할 것 입니다.

 ° Package name 은 프로젝트를 위한 완전한 이름입니다.( Java 프로그래밍 언어에서와 같은 규칙을 가집니다.) 패키지 이름은 안드로이드 시스템에 설치된 모든 패키지를 통틀어 유일해야 합니다. 여러분들은 앱 이름이나 회사이름(company domain)과 독립적으로 이 값들을을 작성할 수 도 있습니다.

 ° Project location 은 여러분의 컴퓨터안에 프로젝트파일을 저장할 디렉토리입니다.

​3. 앱을 실행할 때 선택 형식에서 'Phone and Table' 을 선택하세요.


4. Minimum SDK 는 API 8: Android 2.2(Froyo) 를 선택하세요.

  최소로 요구되는  SDK는 여러분의 앱에서 제공되는 가강 이전의 버전입니다. 가능한 많은 단말기에서 제공될 수 있도록 하기 위해서 가장 낮은 버전으로 설정하셔야만 하며 여러분들의 앱에 사용되는 주요기능 설정은 허용가능한 낮은 버전을 사용하시기 바랍니다. 만약 여러분의 앱에서 어떤기능이 오진 새로운 버전에서만 가능하고 중요 핵심 기능 셋이 아닌경우, 여러분든은 그것을 지원하는 버전위에서만 실행될 때 가능합니다.


5. 체크가 안 되어 있는 다른 모든 옵션(TV, Wear, and Glass)은 그대로 두고 Next 를 클릭합니다.


6. 'Add an activity to your project' 에서 'Blank Activity' 를 선택하고 Next 를 클릭하세요.


7. 'Describe the new activity for your project' 은 그냥 두고 'Finish' 를 클릭합니다.


 여러분의 안드로이드 프로젝트는 현재  기본적은 몇가지 파일을 포함한 "Hello World" 앱 입니다. 이것들 중 몇가지 중요한 것들에 대해 잠시 살펴보도록 하겠습니다.


app/src/main/res/layout/activity_my.xml

 이것은 여러분인 Android Studio를 이용하여 프로젝트를 만들었을 때 추가된 XML 파일 입니다.  새로운 프로젝트의 작업순서에 따르면, Android Studio는 하나의 TextView 와 화면UI의 미리보기를 가진 파일을 줍니다. 이 파일은 몇가지 기본값이 설정되어있으며 "Hello World" 메세지를 보여주는 하나의 TextView를 포함하고 있습니다.


app/src/main/java/com.mycompany.myfirstapp/MyActivity.java

 Android Studio 에서 New Project 작업순서가 끝났을 때 하나의 탭으로 나타난 파일입니다. 이 파일을 선택하시면 여러분들이 만들어 놓은 activity에 대한 클래스의 정의를 보실 수 있습니다. 여러분들이 앱을 생성하고 실행했을때 Activity 클래스는 "Hello World" 라고 말하고 있는 레이아웃(layout) 파일을 읽어서 실행합니다.


app/src/res/AndroidManifest.xml

 manifest 파일은 앱의 기본적인 특징과 구성하고 있는 컴포넌트(Components) 정의를 표시하고 있습니다.

이 포스트들을 따라하면서 앱에서 컴포넌트(Component)를 추가할 때 이 파일을 다시 열게 될 것입니다.


app/build.gradle

 Android Studio는 앱을 컴파일하고 빌드할 때 Gradle를 사용합니다. build.gradle 파일은 프로젝트의 각각의 모듈 뿐만 아니라 프로젝트 전체에 대해서도 있습니다. 이번 앱의 경우에는 일반적으로 각각의 모듈에 대해서만 관심을 가지게 됩니다.

 기본적으로 포함된 설정 defaultConfig :

 

· compiledSdkVersion 은 여러분들의 앱을 컴파일할 플랫폼 버전입니다. 기본적으로 여러분의 SDK에서 가능한 최신버전으로 되어 있습니다. (4.1버전 이상이거나 그 이상이여야만 함. 만약 그렇지 않으면 SDK Manager 를 사용하여 install 해야 함) 여러분은 여전히 오래된 버전에서도 빌드 할 수 있습니다. 하지만 최신버전의 단말기에서 새로운 기능과 훌륭한 UX의 최적화가 가능하도록 최선버전으로 세팅합니다.

 

· applicationId 는 New Project 의 작업 중 지정된 완전한 패키지 이름입니다.

· minSdkVersion 은 New Project 의 작업 중 지정된 최소한의 SDK 버전입니다. 여러분의 앱에서 지원하는 가장 이전버전입니다.

· targetSdkVersion 은 여러분의 앱을 테스트했던 가장높은 안드로이의 버전입니다. 새로운 플랫폼의 추가적인 기능을 쓰려면 최신 API와 같은 버전을 가지고 테스트를 해야 합니다.

추가적인 정보는 개발자 사이트의 'Supporting Different Platform Version' 을 읽어보세요.

 

Gradle에 대한 추가 정보는 'Building Your Project with Gradle' 을 보세요.

 

 

 

여러분들의 앱에 대한 resources를 포함한 /res 의 서브디렉토리를 보겠습니다.

 

drawable-hdpi/

  high-density(hdpi) 스크린으로 디자인 된 drawble 객체(bitmaps 같은)를 위한 디렉토리입니다. 다른 해상도로 디자인 된 자원들은 다른 디렉토리에 포함됩니다. 여러분들이 기본 앱을 실행시킬 때 나타나는 ic_launcher.png 를 발견하실 수 있을 겁니다.


layout/

 위에서 설명했던 MyActivity class 의 기본 배치(layout)를 묘사했던 activity_my.xml 같은 앱의 UI 를 정의한 XML 파일을 위한 디렉토리입니다.


values/

 문자열이나 색상 정의 같은 리소스의 집합을 포함하고 있는 XML파일을 위한 디렉토리입니다. string.xml 파일은 여러분의 기본앱을 실행할 때 보여지는 "Hello World!" 문자열을 정의하고 있습니다.


 앱을 실행하기 위해 다음 포스트에서 계속하겠습니다.

 




 

 Command line(콘솔 명령창)를 이용한 프로젝트 만들기

-------------------------------------------------------

 

 만약 Android Studio를 사용하지 않는다면, 여러분들은 command line에서 SDK tools 를 사용하여 프로젝트 생성을 대신할 수 있습니다.


1. Android SDK's tools/ 경로로 디렉토리를 변경하세요.

2. 실행 :

  android list targets

  

 이것은 여러분들이 다운로드했던 SDK에 대해 사용가능한 Android 플랫폼의 리스트를 출력합니다. 여러분의 컴파일하길 원하는 버전에 대응하는 플랫폼을 찾으세요. 그리고 target ID를 기록하세요. 가능한 가장 높은 버전을 선택할 것을 추천합니다. 여러분들은 여전히 오래된 버전을 지원하도록 빌드할 수 있습니다. 하지만 최신 단말기를 위한 앱의 최적화을 위해 최신버전을 타겟으로 빌드하도록 설정하세요.


 만약 어떠한 타겟 리스트도 보이지 않는다면, 여러분들은 Android SDK Mananger tool 을 사용하여 install을 할 필요가 있습니다. 

개발자 사이트의 Adding SDK Package 를 참고하세요.


3.실행:

  android create project --target<target-id> --name MyFirstApp\

  --path <path-to-workspace>/MyFirstApp --activity MyActivity\

  --package com.example.myfirstapp


 <target-id> 는 타셋의 리스트에서 ID(이전 단계에서 얻어온)로 대체하세요. 그리고 <path-to-workspace>는 여러분의 Android project 들을 저장하길 원하는 폴더 location으로 대체하세요.


Tip : 여러분의 PATH 환경변수에 tools/ 와 같이 platform-tools/를 추가하세요.


 여러분의 안드로이드 프로젝트는 현재 몇가지 기본 파일을 포함하고 있는 기초적인 "Hello World" 앱입니다. 앱을 실행하기 위해 다음 포스트에서 계속하겠습니다.

반응형
반응형

안드로이드 개발을 위한 여러분들의 도전을 환영합니다.


 이번 장에서는 여러분이 어플을 생성하는 방법에 대해 배워보겠습니다. 여러분들은 안드로이드 어플을 생성하고 실행하고 디버깅할 수 있는 방법을 배우게 될 것입니다. 또한 사용자로부터의 입력을 처리하기 위한 심플한 인터페이스를 포함한 안드로이드 어플 디자인의 몇가지 기본적이고 핵심적인 내용에 대해 배우게 될 것입니다.



 개발 환경 설정 및 구축

어플 개발을 시작히기 전에 개발환경을 구축해야만 합니다. 개발환경 구축을 위해 여러분은 다음의 작업이 필요합니다.


1. Android Studio를 다운로드 합니다. 


2. SDK Manager를 이용하여 최신버전의 SDK tools를 다운로드 합니다.


 NOTE: 이 카테고리의 포스트에서는 대부분 Android Studio를 사용할 예정이지만 일부분은 이전 SDK 도구를 사용합니다.

  

 이 포스트는 여러분들에게 안드로이드 개발에 대한 몇가지 기본적인 개념을 가르치키 위해 간단하고 작은 안드로이드 앱을 작성하는 튜토리얼 형식을 사용합니다. 그래서 여러분들이 각 단계를 잘 따라하는 것이 중요합니다.

반응형
반응형

이 카테고리는 제가 안드로이드를 학습할때 학습자료로 주로 사용하였던 안드로이드 개발자 사이트의 트레이닝 자료를 번역해서 포스팅하고자 하고자 합니다.


안드로이드를 학습하고자 한다면 프로그램 다운로드를 위해 필수적으로 접속하시게 되는 사이트이기도 합니다.


안드로이드 개발자 사이트 :  http://developer.android.com


 애석하게도 상당히 많은 안드로이드의 학습자들이 이 사이트를 단순히 프로그램을 다운로드 받기 위한 용도로만 사용하는 모습을 보입니다. 아마 영어로 되어 있다보니 잘 안 보게 되는 것 같습니다. 하지만 이 사이트는 이름 그래도 안드로이드의 어플 개발자들을 위한 공간입니다. 상당히 많은 정보를 가지고 있는 곳인 만큼 자주 들여다 보는 습관을 갖길 바랍니다. IT영어는 일반 영어회화와는 다르게 단어만 검색해도 해석이 되는 경우가 많습니다. 참고하시기 바랍니다.


 거의 대부분의 내용은 트레이닝 사이트의 영어표현을 의역해서 포스팅할 예정입니다. 다만 다소 보충이 필요한 부분은 보완하면서 포스팅 해볼 생각입니다.

제가 진행하고 있는 [게임제작으로 배우는 안드로이드 어플개발]은 제가 모든 내용을 생각하고 표현하느라 포스팅 하는데 시간이 많이 소비되는 만큼 진도 차이가 많이 날 것이고 내용을 전개하는 방식도 다르지만 두 카테고리 모두 안드로이드를 학습하는데 도움이 될 것이니 많은 관심 감사하겠습니다. 

반응형
반응형

자. 그럼 이제부터 프로젝트 하나는 만들도록 하겠습니다. 아래의 이름으로 프로젝틀 하나 생성하시기바랍니다. 여러 설정값들에 대한 의미는 이전 포스트에 언급했던 것을 참고를 선택하시고 'Next'버튼을 눌러 프로젝트를 생성해 보겠습니다. 


 Application Name : ViewByJava (java로 view를 만들었다는 의미로 이름을 지었습니다. 다른 이름으로 하셔도 괜찮습니다.)


 안드로이드 프로젝트 생성자를 통해서 기본적으로 Java파일과 xml파일이 생성되어 있습니다. 우선 xml은 이용하지 않을 것이니 java파일만을 살펴보겠습니다.

 

 MainActivity.java

 public class MainActivity extends Activity{


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

}       


}

 

 

 위에 보이는 setContenView()메소드가 화면에 보여질 내용물(Content)을 설정하는 것이라 설명했었습니다. 이 메소드의 매개변수를 보면 이전 강좌에서 언급했듯이 res폴더 안에 xml 파일로 만들어 놓은 'activity_main.xml'을 보여 주고 있습니다. 그렇다니까 그냥 그런가 보다 했지만 사실 생각해보면 조금 이상한 부분이 있습니다. 지금 작성하고 있는 파일은 Java언어로 개발한 것이고 보여지는 부분을 만들기 위해 사용한 파일은 xml언어로 개발된 것입니다. 이 둘은 전혀 다른 언어를 사용하고 있는 것입니다. java에서 xml파일의 내용을 읽어들이는 것은 사실 그렇게 간단하지만은 않습니다. xml파일을 읽어들여 파싱하고 객체로 생성시키는(inflating) 일련의 작업들이 필요합니다. 하지만 여러분은 그런 작업을 어디에서 작성하지 않고 있습니다. 사실 setContentView 메소드는 매개변수로 View 객체를 요구하고 있습니다. 하지만 이 곳에 xml파일의 resId(리소스ID)를 주면 내부적으로 xml을 inflate해서 View객체로 만들어 주고 있습니다. 결국 여러분들은 그냥 편하게 xml언어와 자바언어를 번갈아가며 작업하고 손쉽게 연동하여 사용하고 있지만 안드로이드는 xml을 모두 객체로 생성하여 자바언어로 실행되고 있다고 보시면 됩니다.


setContentView()메소드는 아래처럼 오버로딩되어 있는 메소드 입니다.

 setContentView(int resId)      :매개변수로 xml의 리소스ID를 요구    - xml 언어로 View를 만들었을 때 사용 (Default) 

 setContentView(View view)   :매개변수로 View 객체를 요구         - java 언어로 View객체를 만들었을때 사용


  

 




 ----- [ 이 포스트는 아직 미 완성입니다. 작성중......  다음에 이이서 작업합니다.  그림작업포함] --------- 

반응형

+ Recent posts