46
아아아아아 LifecareScienceLAB Android Seminar 3 rd class Android Software Development 2011/05/04 – p.m. 06:00 – 아아아 409 아 아아아아아

LifecareScienceLAB Android Seminar 3 rd class

  • Upload
    sook

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

아주대학교. LifecareScienceLAB Android Seminar 3 rd class. Android Software Development 2011/05/04 – p.m. 06:00 – 팔달관 409 호. Review. User Interface Button, TextView , EditText LinearLayout Software Design Tool. Widget. TextView , Button, EditText 를 이용하여 버튼을 누르면 편집한 문자열이 출력되는 예제 - PowerPoint PPT Presentation

Citation preview

Page 1: LifecareScienceLAB Android Seminar 3 rd  class

아주대학교

LifecareScienceLABAndroid Seminar 3rd class

• Android• Software Development

2011/05/04 – p.m. 06:00 – 팔달관 409 호

아주대학교

Page 2: LifecareScienceLAB Android Seminar 3 rd  class

Review User Interface

Button, TextView, EditText LinearLayout

Software Design Tool

Page 3: LifecareScienceLAB Android Seminar 3 rd  class

Widget TextView, But-

ton, EditText 를 이용하여 버튼을 누르면 편집한 문자열이 출력되는 예제main.xml→

Page 4: LifecareScienceLAB Android Seminar 3 rd  class

Widget↓ Activity Class

Page 5: LifecareScienceLAB Android Seminar 3 rd  class

State Diagram

Not Playing,At the begin-

ning

Playing

Paused

Play

Play

Play

PauseStop

Stop

Pause

PauseStop

Page 6: LifecareScienceLAB Android Seminar 3 rd  class

Structure Chart

main

process

Input

ouput

sub process 2

sub process 1

sub process 3

print

Page 7: LifecareScienceLAB Android Seminar 3 rd  class

Flow Chart

i <= 0

Turn on All LED

Output Data in Array[i]

to LED

i++ False

True

Add Random Value to Ar-

ray

Array Size + 1

START

i <= 0

i < Array Size?Turn on All LED

Input Data from But-

ton

False

True

Array[i] == Input?True

i++

Clear ArrayArray Size

<= 0

False

i <= 0

i < Array Size?

New Stage

LED Output

Button Input

Page 8: LifecareScienceLAB Android Seminar 3 rd  class

Class DiagramClass

ExplainBuilder

문서를 구성하기 위한 메소드를결정하는 추상 클래스

Director

한 개의 문서를 만드는 클래스TextBuilder

일반 텍스트 ( 보통의 문자열 ) 를이용해서 문서를 만드는 클래스

HTMLBuilder

HTML 파일을 이용해서문서를 만드는 클래스

Main

동작 테스트용 클래스

Builder

makeTitlemakeStringmakeItemsclose

TextBuilder

buffer

makeTitlemakeStringmakeItemsclosegetResult

makeTitlemakeStringmakeItemsclosegetResult

HTMLBuilder

Director

builderconstruct

filenamewriter

Uses▲

MainUses▶

Uses▲

Page 9: LifecareScienceLAB Android Seminar 3 rd  class

Sequence Diagram:Client :Server :Device

work open

print

close

write

Page 10: LifecareScienceLAB Android Seminar 3 rd  class

Contents List

Android• Activity• Toast• Log

Software Development• Design Presentation

Page 11: LifecareScienceLAB Android Seminar 3 rd  class

아주대학교

ANDROID

• Activity• Toast• Log

Page 12: LifecareScienceLAB Android Seminar 3 rd  class

Activity 프로그램에서의 “화면 하나” 반드시 “ View” 나 “ View Group” 를 가져야 한다 . 액티비티는 서로 중첩되지 않으며 독립적이다 .

(View 는 중첩된다 .)

Page 13: LifecareScienceLAB Android Seminar 3 rd  class

Activity LifeCycle

Page 14: LifecareScienceLAB Android Seminar 3 rd  class

Activity 추가MainActivity.-

javaActivity

SubActivity.javaActivity

mainactivity.xmlView

subactivity.xmlView

Page 15: LifecareScienceLAB Android Seminar 3 rd  class

프로젝트 생성

Create Activity :

MainActivity →

Page 16: LifecareScienceLAB Android Seminar 3 rd  class

main.xml 파일 이름 바꾸기

Page 17: LifecareScienceLAB Android Seminar 3 rd  class

main.xml 파일 이름 바꾸기

Page 18: LifecareScienceLAB Android Seminar 3 rd  class

SubActivity Class 추가하기

Page 19: LifecareScienceLAB Android Seminar 3 rd  class

SubActivity Class 추가하기

Page 20: LifecareScienceLAB Android Seminar 3 rd  class

subactivity xml 파일 추가하기

Page 21: LifecareScienceLAB Android Seminar 3 rd  class

subactivity xml 파일 추가하기

Page 22: LifecareScienceLAB Android Seminar 3 rd  class

AndroidManifest 파일에 등록하기

Page 23: LifecareScienceLAB Android Seminar 3 rd  class

AndroidManifest 파일에 등록하기

Page 24: LifecareScienceLAB Android Seminar 3 rd  class

AndroidManifest 파일에 등록하기

Page 25: LifecareScienceLAB Android Seminar 3 rd  class

AndroidManifest 파일에 등록하기

Page 26: LifecareScienceLAB Android Seminar 3 rd  class

AndroidManifest 파일에 등록하기

Page 27: LifecareScienceLAB Android Seminar 3 rd  class

AndroidManifest 파일에 등록하기

Page 28: LifecareScienceLAB Android Seminar 3 rd  class

AndroidManifest 파일에 등록하기

Page 29: LifecareScienceLAB Android Seminar 3 rd  class

AndroidManifest 파일에 등록하기

Page 30: LifecareScienceLAB Android Seminar 3 rd  class

MainActivity.javaimport android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;

public class MainActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.mainactivity);

Button btnCall = (Button)findViewById(R.id.call);btnCall.setOnClickListener(new OnClickListener(){

public void onClick(View v){Intent intent = new Intent(MainActivity.this, SubActivity.class);startActivity(intent);

}});

}}

Page 31: LifecareScienceLAB Android Seminar 3 rd  class

mainactivity.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"><TextView

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" 메인 엑티비티입니다 ." android:textSize="30dp" android:textColor="#FF0000"></TextView>

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/call" android:text="Call"></Button>

</LinearLayout>

Page 32: LifecareScienceLAB Android Seminar 3 rd  class

SubActivity.javaimport android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;

public class SubActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.subactivity);

Button btnClose = (Button)findViewById(R.id.close);btnClose.setOnClickListener(new OnClickListener(){

public void onClick(View v){finish();

}});

}}

Page 33: LifecareScienceLAB Android Seminar 3 rd  class

subactivity.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"android:layout_height="fill_parent" android:orientation="vertical"><TextView

android:layout_height="wrap_content" android:layout_width="fill_parent" android:text=" 메인에서 호출한 서브입니다 ." android:textSize="20dp" android:textColor="#00FF00"></TextView>

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/close"android:text="Close"></Button>

</LinearLayout>

Page 34: LifecareScienceLAB Android Seminar 3 rd  class

Activity 간의 통신 인텐트는 액티비티간에 인수와 리턴값을 전달하는 도구로도 사용된다 . 값을 저장하는 Method

Intent putExtra(String name, int value) Intent putExtra(String name, String value) Intent putExtra(String name, boolean value)

저장된 값을 꺼내오는 Method int getIntExtra(String name, int defaultValue) String getStringExtra(String name) boolean getBooleanExtra(String name, boolean defaultValue)

리턴값을 돌려받기 위해 누가 호출했는지 알려주는 Method public void startActivityForResult(Intent intent, int request-

Code) 리턴값을 돌려받는 Method

Protected void onActivityResult(int requestCode, int result-Code, Intent data)

Page 35: LifecareScienceLAB Android Seminar 3 rd  class

Activity 간의 통신CommActivity.-

javaActivity

ActEdit.javaActivity

main.xmlView

sub.xmlView

Page 36: LifecareScienceLAB Android Seminar 3 rd  class

CommActivity.java import android.app.*; import android.content.*; import android.os.*; import android.view.*; import android.widget.*;

public class CommActivity extends Activity { TextView mText; final static int ACT_EDIT = 0;

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

mText = (TextView)findViewById(R.id.textView);

Button btnEdit=(Button)findViewById(R.id.buttonNEXT); btnEdit.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(CommActivity.this, ActEdit.class); intent.putExtra("TextIn", mText.getText().toString()); startActivityForResult(intent,ACT_EDIT); } }); } protected void onActivityResult (int requestCode, int resultCode, Intent data) { switch (requestCode) { case ACT_EDIT: if (resultCode == RESULT_OK) { mText.setText(data.getStringExtra("TextOut")); } break; } } }

Page 37: LifecareScienceLAB Android Seminar 3 rd  class

main.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" > <TextView android:text="TextView" android:layout_height="wrap_content" android:id="@+id/textView" android:textSize="30dp" android:layout_width="fill_parent" ></TextView> <Button android:layout_height="wrap_content" android:id="@+id/buttonNEXT" android:text="EDIT" android:layout_width="fill_parent" android:textSize="20dp" ></Button> </LinearLayout>

Page 38: LifecareScienceLAB Android Seminar 3 rd  class

ActEdit.java import android.app.*; import android.content.*; import android.os.*; import android.view.*; import android.widget.*;

public class ActEdit extends Activity { EditText mEdit;

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sub);

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

Intent intent = getIntent(); mEdit.setText(intent.getStringExtra("TextIn"));

Button btnOK=(Button)findViewById(R.id.buttonOK); btnOK.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("TextOut", mEdit.getText().toString()); setResult(RESULT_OK,intent); finish(); } });

Button btnCancel=(Button)findViewById(R.id.buttonCANCEL); btnCancel.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { setResult(RESULT_CANCELED); finish(); } }); } }

Page 39: LifecareScienceLAB Android Seminar 3 rd  class

sub.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <EditText android:text="EditText" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_width="fill_parent" android:textSize="30dp" ></EditText> <Button android:layout_height="wrap_content" android:id="@+id/buttonOK" android:text="OK" android:layout_width="fill_parent" android:textSize="20dp" ></Button> <Button android:layout_height="wrap_content" android:id="@+id/buttonCANCEL" android:text="CANCEL" android:layout_width="fill_parent" android:textSize="20dp" ></Button> </LinearLayout>

Page 40: LifecareScienceLAB Android Seminar 3 rd  class

Activity 간의 통신CommActivity.java

ActivityActEdit.java

Activity

new intent+Caller, +Callee getIntent

putExtra+TextIn

startActivityForRe-sult

getStringExtraTextIn

new intent

putExtra+TextOut

setResut

onActivityResult

getStringExtraTextOut

TextIn

TextOut

Page 41: LifecareScienceLAB Android Seminar 3 rd  class

Toast 작은 팝업 대화상자 초보자들에게 디버깅용 , 학습용으로 아주 용이한 출력 방법

변수 값을 수시로 찍어볼 때 등

Page 42: LifecareScienceLAB Android Seminar 3 rd  class

Toast 생성 Method

static Toast makeToast(Context context, int resId, int duration) context : 메시지를 출력하는 주체

MainActivity.this resId : 출력할 문자열의 ID

R.String.name duration : 메시지 출력 지속시간

LENGTH_SHORT, LENGTH_LONG static Toast makeToast(Context context, CharSequence text, int duration)

text : 출력할 메시지 “LifecareScienceLAB”

옵션 Method void setGravity(int gravity, int, xOffset, int yOffset) void setMargin(float horizonMargin, float verticalMargin) void setText(CharSequence s) void setDuration(int duration) void setView(View view)

메시지를 보이거나 숨기는 Method void show() void cancel()

Page 43: LifecareScienceLAB Android Seminar 3 rd  class

ToastTest.java import android.app.*; import android.os.*; import android.view.*; import android.widget.*; import exam.AndroidExam.*;

public class ToastTest extends Activity { Toast mToast = null; int count; String str;

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

findViewById(R.id.shortmsg).setOnClickListener(mClickListener); findViewById(R.id.longmsg).setOnClickListener(mClickListener); findViewById(R.id.count1).setOnClickListener(mClickListener); findViewById(R.id.count2).setOnClickListener(mClickListener); findViewById(R.id.customview).setOnClickListener(mClickListener); }

Button.OnClickListener mClickListener = new Button.OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.shortmsg: Toast.makeText(ToastTest.this, " 잠시 나타나는 메시지 ", Toast.LENGTH_SHORT).show(); break; case R.id.longmsg: Toast.makeText(ToastTest.this, " 조금 길게 나타나는 메시지 ", Toast.LENGTH_LONG).show(); break; case R.id.count1: str = " 현재 카운트 = " + count++; if (mToast != null) { mToast.cancel(); } mToast = Toast.makeText(ToastTest.this, str, Toast.LENGTH_SHORT); mToast.show(); break; case R.id.count2: str = " 현재 카운트 = " + count++; if (mToast == null) { mToast = Toast.makeText(ToastTest.this, str, Toast.LENGTH_SHORT); } else { mToast.setText(str); } mToast.show(); break; case R.id.customview: LinearLayout linear = (LinearLayout)View.inflate(ToastTest.this, R.layout.output_toast, null); Toast t2 = new Toast(ToastTest.this); t2.setView(linear); t2.show(); break; } } }; }

Page 44: LifecareScienceLAB Android Seminar 3 rd  class

main.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" > <Button android:id="@+id/shortmsg" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="짧은 메시지" /> <Button android:id="@+id/longmsg" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="긴 메시지" /> <Button android:id="@+id/count1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="카운트 연속 출력" /> <Button android:id="@+id/count2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="카운트 연속 출력2" /> <Button android:id="@+id/customview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="커스텀 뷰 표시" /> </LinearLayout>

Page 45: LifecareScienceLAB Android Seminar 3 rd  class

Log 개발자를 위한 디버깅용 메시지 Eclipse 를 통해서만 확인 가능

LogCat 을 이용하여 확인 할 수 있다 . 다양한 메시지 필터

Log.v : verbose Log.i : information Log.w : warning Log.e : error Log.d : debugging

Log.x(String tag, String msg) tag : 사용자 정의 메시지 분류 msg : 출력할 메시지

Page 46: LifecareScienceLAB Android Seminar 3 rd  class

아주대학교

SOFTWARE DEVELOP-MENT

• Design Presentation