Download USL Android Seminar

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
LifecareScienceLAB
Android Seminar 3rd 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 를 이용
하여 버튼을 누르
면 편집한 문자열
이 출력되는 예제
main.xml→
Widget
↓ Activity Class
State Diagram
Play
Pause
Stop
Not Playing,
At the beginning
Playing
Play
Stop
Pause Play
Stop
Paused
Pause
Structure Chart
sub process 1
main
process
sub process 2
Input
sub process 3
ouput
print
Flow Chart
START
Add Random
Value to Array
Array Size + 1
i <= 0
i <= 0
Turn on All
LED
Clear Array
Array Size <= 0
False
i < Array Size?
i++
i++
i < Array Size?
True
True
Input Data
from Button
Output Data in
Array[i] to LED
False
Array[i] == Input? True
i <= 0
False
Turn on All
LED
Class Diagram
Class
Uses▶
Main
Director
Explain
Builder
builder
Builder
makeTitle
makeString
makeItems
close
construct
문서를 구성하기 위한 메소드를
결정하는 추상 클래스
Director
한 개의 문서를 만드는 클래스
TextBuilder
TextBuilder
HTMLBuilder
일반 텍스트(보통의 문자열)를
이용해서 문서를 만드는 클래스
buffer
filename
writer
makeTitle
makeString
makeItems
close
getResult
makeTitle
makeString
makeItems
close
getResult
Uses▲
Uses▲
HTMLBuilder
HTML 파일을 이용해서
문서를 만드는 클래스
Main
동작 테스트용 클래스
Sequence Diagram
:Client
work
:Server
:Device
open
print
close
write
Contents List
Android
•Activity
•Toast
•Log
Software Development
•Design Presentation
아주대학교
•
•
•
Activity
Toast
Log
ANDROID
Activity
 프로그램에서의 “화면 하나”
 반드시 “View”나 “View Group”를 가져야 한다.
 액티비티는 서로 중첩되지 않으며 독립적이
다.(View는 중첩된다.)
Activity LifeCycle
Activity 추가
MainActivity.java
Activity
mainactivity.xml
View
SubActivity.java
Activity
subactivity.xml
View
 프로젝트 생성
Create Activity :
MainActivity →
main.xml 파일 이름 바꾸기
main.xml 파일 이름 바꾸기
SubActivity Class 추가하기
SubActivity Class 추가하기
subactivity xml 파일 추가하기
subactivity xml 파일 추가하기
AndroidManifest 파일에 등록하기
AndroidManifest 파일에 등록하기
AndroidManifest 파일에 등록하기
AndroidManifest 파일에 등록하기
AndroidManifest 파일에 등록하기
AndroidManifest 파일에 등록하기
AndroidManifest 파일에 등록하기
AndroidManifest 파일에 등록하기
MainActivity.java
import 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. */
@Override
public 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);
}
});
}
}
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>
SubActivity.java
import 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. */
@Override
public 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();
}
});
}
}
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>
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 requestCode)
리턴값을 돌려받는 Method

Protected void onActivityResult(int requestCode, int resultCode, Intent data)
Activity간의 통신
CommActivity.java
Activity
main.xml
View
ActEdit.java
Activity
sub.xml
View
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;
}
}
}
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>
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();
}
});
}
}
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>
Activity간의 통신
CommActivity.java
Activity
ActEdit.java
Activity
new intent
+Caller, +Callee
getIntent
TextIn
putExtra
+TextIn
getStringExtra
TextIn
startActivityForResult
new intent
onActivityResult
putExtra
+TextOut
getStringExtra
TextOut
setResut
TextOut
Toast
 작은 팝업 대화상자
 초보자들에게 디버깅용, 학습용으로 아주
용이한 출력 방법
 변수 값을 수시로 찍어볼 때 등
Toast

생성 Method

static Toast makeToast(Context context, int resId, int duration)




context : 메시지를 출력하는 주체

MainActivity.this

R.String.name

LENGTH_SHORT, LENGTH_LONG
resId : 출력할 문자열의 ID
duration : 메시지 출력 지속시간
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)


void show()
void cancel()
메시지를 보이거나 숨기는 Method
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;




}

}


};
}
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>
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 : 출력할 메시지
아주대학교
•
Design Presentation
SOFTWARE DEVELOPMENT
Related documents