Android Side

Download Report

Transcript Android Side

Application Create
Android Side
Application 설계 시 꼭 지켜야 할 5가지
• UI 쓰레드는 UI만 처리하게 하자
• 사용자를 방해하지 말라.
• 다양한 화면 해상도를 지원하라
– Absolutelayout을 사용하지 말아라 (고정값)
– 코드에서 픽셀(px)로 크기를 지정하지 말아라. dip를 사용
– 텍스트를 지정할 때 사용해야 하는 단위 (폰트 : SP, DP)
• 네트워크는 항상 느리다고 가정하라
• 다양한 하드웨어에 대비하라.
Android Side
Project 생성
Android Side
Project root 폴더 구성
Android Side
Android Project생성 폴더
C:\Users\User\workspace\Example
Android Side
Android Project생성 폴더
Android Side
프로그램 실행 순서
Android Side
실습 1
Android Side
Icon
-Applications :
보통 'app' 이라 표현하는 것에 해당합니다.
서로 연관성과 의미를 가지고 묶인
activities의 집합이고, Home screen
및 menu화면이라고 하는 sliding drawer
에서 아이콘을 통하여 실행시킵니다.
<application
android:icon="@drawable/icon"
android:label="@string/app_name“>
</application>
Android Side
배경 이미지 삽입
Android Side
상단 Title bar 없애기
<application
android:theme="@android:style/Theme.NoTi
tleBar">
</application>
requestWindowFeature(Window.FEATURE_NO_TITLE);
Android Side
Spinner
AnimationDrawable introSpinAnim;
ImageView introSpin = (ImageView)findViewById(R.id.Intro_ani);
introSpin.setBackgroundResource(R.anim.introspiner);
introSpinAnim = (AnimationDrawable)introSpin.getBackground();
Android Side
Activity 생명주기
1. 개발된 액티비티가 실행되는데, 다른 중요한 액티비티가 실행돼야 하는 상
황에 메모리가 부족하다면 중요도가 떨어지는 액티비티를 강제로 종료시켜
메모리를 확보하기도 한다. 따라서 안드로이드가 제공하는 애플리케이션 생
명주기를 애플리케이션 논리구조에 적절하게 연결한다는 점이 굉장히 중요
하다.
2. 액티비티 상태에는 활성, 일시 중지, 중지, 비활성 상태가 있다.
3. 상태 전이는 비결정적이며 전적으로 안드로이드 메모리 관리자에 의해 다뤄
진다. 안드로이드는 비활성 액티비티를 가진 애플리케이션을 종료하는 것으
로 시작해, 이어서 중된 것들을, 그리고 극단적인 경우 일시 중지된 것들을
제거할 것이다.
4. 액티비티가 일시 중지되거나 중지될 때 모든 UI상태 변화를 저장하고 모든
데이터를 지속시키는 것이 중요하다. 액티비티가 활성화되고 나면 저장된
이들 값을 복구해야 한다.
Android Side
Activity Stack
새로운 액티비티가 시작됨
새로운 액티비티
활성 액티비티
뒤로 가기 버튼이 눌렸거
나 액티비티가 종료됨
바로 전 활성 액티비티
리소스 해제를
위해 제거됨
이전 액티비티들
액티비티 스택
Android Side
State Change
Android Side
State Change
Android Side
State Change
1. Start => Run
(1) onCreate
Activity 처음 시작할 때 호출
Start
1
Run
4
Stop
Destroy
Pause
(2) onStart
Activity가 곧 사용자에게 보여
질 것임
(3) onResotreInstantState*
onSaveInstanceState가 미리
저장해 둔 상태에서 Activity가
초기화 될 때 호출 된다.
디폴트 구현값이 상태를 복원
한다.
(4) onResume()
Activity가 사용자와 상호작용
을 시작할 수 있을 때 호출됨.
Android Side
State Change
2. Run => Pause
(1) onSaveInstanceState*
텍스트 필드 내의 커서 위치
등의 인스턴스별 상태를
Activity가 절약하도록 이 메
소드를 호출
디폴트 구현 값이 모든 사용
자 인터페이스 제어 상태를
자동으로 저장하므로 대게
재정의할 필요가 없음
Start
1
Run
4
Stop
Destroy
Pause
(2) onPause
Activity가 배경으로 전환될
때 호출
주로 다른 Activity가 이 프로
그램 앞에 놓일 때 호출된다.
Android Side
State Change
3. Pause => Run
(1) onResume
Activity가 사용자와 상
호작용을 시작할 수 있
을 때 호출된다.
Start
1
Run
4
Stop
Pause
Destroy
Android Side
State Change
Start
1
Run
4
Stop
Destroy
Pause
4. Pause => Stop
(1) onSaveInstanceState
텍스트 필드 내의 커서 위치
등의 인스턴스별 상태를
Activity가 절약하도록 이 메
소드를 호출
디폴트 구현 값이 모든 사용
자 인터페이스 제어 상태를
자동으로 저장하므로 대게
재정의할 필요가 없음
(2) onStop
Activity가 사용자에게 더 이
상 보여지지 않을 때 호출
메모리가 없으면 시스템이
프로세스를 종료 시킴
Android Side
State Change
5. Pause => Destroy
메모리 부족으로 바로 프로
세스 종료
Start
1
Run
4
Stop
Pause
Destroy
Android Side
State Change
Start
1
Run
4
Stop
Destroy
Pause
6. Stop => Run
(1) onRestart
Activity가 정지 상태에
서 다시 디스플레이된다
.
(2) onStart
Activity가 곧 사용자에
게 보여질 것을 알림
(3) onResume
Activity가 사용자와 상
호작용을 시작할 수 있
을 때 호출된다.
Android Side
State Change
Start
1
Run
4
Stop
Pause
7. Stop => Destroy
(1) onDestroy
Activity가 소멸되기 직
전에 호출
메모리가 부족하면
onDestroy를 호출하지
않고 시스템이 프로세스
를 종료시킨다.
Destroy
Android Side
전체 수명
1. 전체 수명은 첫 onCreate 호출과 마지막 onDestroy 호출 사이에 발생한다.
2. 액티비티를 초기화하려면 onCreate 메서드를 사용한다.
3. onCreate 메서드에는 마지막 onSaveInstanceState 호출에서 저장된 UI 상
태를 담고 있는 Bundle 객체가 전달된다. 사용자 인터페이스를 그의 이전 상
태로 복구하기 위해서는 onCreate 메서드난 재정의된
onRestoreInstanceState 메서드내에서 이 번들을 사용한다.
4. 생성된 모든 리소스를 정리하고, 네트워크나 데이터베이스 연결 같은 모든
외부 연결을 종료하기 위해서는 onDestory를 재정의한다.
5. 객체의 빈번한 생성과 소멸은 추가적인 가비지 컬렉션을 유발하기 때문에
잠깐식 사용되는 단기 객체의 생성을 피하는 것이 좋다.
Android Side
가시 수명
1. 가시 수명범위는 onStart 호출과 onStop 호출 사이다. 이들 호출 내에서는
액티비티가 포커스를 가지지 않고 또 부분적으로 가려질지라도 화면에 보이
게 될 것이다.
2. onStop메서드는 애니메이션, 스레드, 타이머, 서비스, 혹은 전적으로 사용자
인터페이스를 업데이트하는 데에만 사용되는 기타 다른 프로세스들을 일시
중지하거나 중지하는 데 사용돼야 한다.
3. Ui가 다시 화면에 보일 때 이들 프로세스를 재개하거나 재시작하려면
onStart(또는 onRestart) 메서드를 사용한다.
Android Side
활성 수명
1. 활성 수명은 onResume 호출로 시작해, 그에 대응하는 onPause 호출로 끝
난다. 활성 액티비티는 포그라운에 있으며 사용자 입력 이벤트를 받는다.
2. 활성수명은 새로은 액티비티가 화면에 나타나거나, 장치가 절전 모드로 들
어갈 때, 혹은 액티비티가 포커스를 잃을 때 끝나므로, 여러분의 액티비티는
소멸되기 전까지 여러 번의 활성 수명을 겪을 것이다.
3. onPause 바로 직전에는 onSaveInstanceState가 호출된다. 이 메서드는 액
티비티의 UI상태를 onCreate와 onRestoreInstanceState 메서드에 전달될
Bundle에 저장할 수 있도록 기회를 준다.
4. onPause 이후로는 액티비티가 경고 없이 종료될 수 있기 때문에, 대부분의
액티비티의 구현은 저장되지 않은 변경을 저장하기 위해 최소한 onPause
매서드 정도는 재정의할 것이다.
5. onPause에서 중지된 브로드캐스트 수신자나 다른 프로세스를 재등록하려
면 onResume을 사용한다.
Android Side
Activity 이동
Android Side
Main UI 구성
Android Side
Linearlayout
Android Side
Click Event
View Invitation = findViewById(R.id.Invitation);
Invitation.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
Intent i = new Intent(this, Invitation.class);
startActivity(i);
}
});
public class Ex_MainMenu extends Activity
implements OnClickListener
View Invitation = findViewById(R.id.Invitation);
Invitation.setOnClickListener(this);
public void onClick(View v){
switch(v.getId()){
case R.id.Invitation:
Intent i =
new Intent(this,Invitation.class);
startActivity(i);
Android
} Side
Click Event시 Touch효과 구현
• drawable내 xml구성
• 해당 drawble layout에 장착하기
Android Side
Invitation
Android Side
Same Layout
Android Side
Invitation Layout구성
• 단말의 Resolution을 고려
– sp, dip를 사용
– 호환을 고려한 Pattern Image활용
• Memory참조(R.java)
– Resource 재활용을 통한 중복 Frame 최소화
Android Side
Data 영역(R.java)
Android Side
Layout Structure
ui_twodepth_menu_title
Top
Content ui_ex_frame
Bottom
ui_main_frame
ui_twodepth_menu_bottom
Android Side
Pattern Image & Include
Android Side
실습 2
Android Side
Event Information
Top
ui_twodepth_menu_title
Content ui_twodepth_menu_content
ui_twodepth_menu
Android Side
Nobel Laureate Lecture
Android Side
UI Detail Setting
android:visibility="invisible"
setVisibility(View.VISIBLE);
Android Side
UI구성 시 발상의 전환
Android Side
UI 동적 구성 시 주의점
•
•
•
•
•
어느 Activity에서 왔는지에 대한 값
적절한 Touch Event에 맞는 UI전환
이전 Key누를 시 어느 화면으로 갈 지
적절한 Resource control및 생명주기 고려
DB나 Network연결에 대한 적절한 값 배치
Android Side
Symposia
Android Side
Linearlayout Inflate
Android Side
List안에 내용 넣기
Android Side
Android Side
Image 확대
Android Side