Application Create Android Side
Application 설계 시 꼭 지켜야 할 5 가지 UI 쓰레드는 UI 만 처리하게 하자 사용자를 방해하지 말라. 다양한 화면 해상도를 지원하라 –Absolutelayout 을 사용하지 말아라 ( 고정값 ) – 코드에서 픽셀 (px) 로 크기를 지정하지 말아라. dip 를 사용 – 텍스트를 지정할 때 사용해야 하는 단위 ( 폰트 : SP, DP) 네트워크는 항상 느리다고 가정하라 다양한 하드웨어에 대비하라. Android Side
Project 생성 Android Side
Project root 폴더 구성 Android Side
Android Project 생성 폴더 Android Side C:\Users\User\workspace\Example
Android Project 생성 폴더 Android Side
프로그램 실행 순서 Android Side
실습 1 Android Side
Icon -Applications : 보통 'app' 이라 표현하는 것에 해당합니다. 서로 연관성과 의미를 가지고 묶인 activities 의 집합이고, Home screen 및 menu 화면이라고 하는 sliding drawer 에 서 아이콘을 통하여 실행시킵니다. Android Side
배경 이미지 삽입 Android Side
상단 Title bar 없애기 <application tleBar"> requestWindowFeature(Window.FEATURE_NO_TITL E); 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 생명주기 Android Side 1. 개발된 액티비티가 실행되는데, 다른 중요한 액티비티가 실행돼야 하는 상황 에 메모리가 부족하다면 중요도가 떨어지는 액티비티를 강제로 종료시켜 메 모리를 확보하기도 한다. 따라서 안드로이드가 제공하는 애플리케이션 생명 주기를 애플리케이션 논리구조에 적절하게 연결한다는 점이 굉장히 중요하 다. 2. 액티비티 상태에는 활성, 일시 중지, 중지, 비활성 상태가 있다. 3. 상태 전이는 비결정적이며 전적으로 안드로이드 메모리 관리자에 의해 다뤄 진다. 안드로이드는 비활성 액티비티를 가진 애플리케이션을 종료하는 것으 로 시작해, 이어서 중된 것들을, 그리고 극단적인 경우 일시 중지된 것들을 제 거할 것이다. 4. 액티비티가 일시 중지되거나 중지될 때 모든 UI 상태 변화를 저장하고 모든 데 이터를 지속시키는 것이 중요하다. 액티비티가 활성화되고 나면 저장된 이들 값을 복구해야 한다.
Activity Stack Android Side 이전 액티비티들 새로운 액티비티활성 액티비티 바로 전 활성 액티비티 리소스 해제를 위해 제거됨 액티비티 스택 새로운 액티비티가 시작됨 뒤로 가기 버튼이 눌렸거 나 액티비티가 종료됨
State Change Android Side
State Change
Android Side Start Run Stop 1 Destroy Pause Start => Run (1) onCreate Activity 처음 시작할 때 호출 (2) onStart Activity 가 곧 사용자에게 보여 질 것임 (3) onResotreInstantState* onSaveInstanceState 가 미리 저장해 둔 상태에서 Activity 가 초기화 될 때 호출 된다. 디폴트 구현값이 상태를 복원 한다. (4) onResume() Activity 가 사용자와 상호작용을 시작할 수 있을 때 호출됨. State Change
Android Side State Change Start Run Stop 1 Destroy Pause Run => Pause (1) onSaveInstanceState* 텍스트 필드 내의 커서 위치 등의 인스턴스별 상태를 Activity 가 절약하도록 이 메 소드를 호출 디폴트 구현 값이 모든 사용 자 인터페이스 제어 상태를 자동으로 저장하므로 대게 재 정의할 필요가 없음 (2) onPause Activity 가 배경으로 전환될 때 호출 주로 다른 Activity 가 이 프로 그램 앞에 놓일 때 호출된다.
Android Side State Change Start Run Stop 1 Destroy Pause Pause => Run (1) onResume Activity 가 사용자와 상호 작용을 시작할 수 있을 때 호출된다.
Android Side State Change Start Run Stop 1 Destroy Pause Pause => Stop (1) onSaveInstanceState 텍스트 필드 내의 커서 위치 등의 인스턴스별 상태를 Activity 가 절약하도록 이 메 소드를 호출 디폴트 구현 값이 모든 사용 자 인터페이스 제어 상태를 자동으로 저장하므로 대게 재 정의할 필요가 없음 (2) onStop Activity 가 사용자에게 더 이 상 보여지지 않을 때 호출 메모리가 없으면 시스템이 프 로세스를 종료 시킴
Android Side State Change Start Run Stop 1 Destroy Pause Pause => Destroy 메모리 부족으로 바로 프로 세스 종료
Android Side State Change Start Run Stop 1 Destroy Pause Stop => Run (1) onRestart Activity 가 정지 상태에서 다시 디스플레이된다. (2) onStart Activity 가 곧 사용자에게 보여질 것을 알림 (3) onResume Activity 가 사용자와 상호 작용을 시작할 수 있을 때 호출된다.
Android Side State Change Start Run Stop 1 Destroy Pause Stop => Destroy (1) onDestroy Activity 가 소멸되기 직전 에 호출 메모리가 부족하면 onDestroy 를 호출하지 않고 시스템이 프로세스 를 종료시킨다.
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 을 사용한다.
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 public void onClick(View v){ switch(v.getId()){ case R.id.Invitation: Intent i = new Intent(this,Invitation.class); startActivity(i); } View Invitation = findViewById(R.id.Invitation); Invitation.setOnClickListener(this); Android Side
Click Event 시 Touch 효과 구현 drawable 내 xml 구성 해당 drawble layout 에 장착하기 Android Side
Invitation Android Side
Same Layout Android Side
Invitation Layout 구성 Android Side 단말의 Resolution 을 고려 –sp, dip 를 사용 – 호환을 고려한 Pattern Image 활용 Memory 참조 (R.java) –Resource 재활용을 통한 중복 Frame 최소화
Data 영역 (R.java) Android Side
Layout Structure Top Bottom Content ui_twodepth_menu_title ui_twodepth_menu_bottom ui_ex_frame ui_main_frame Android Side
Pattern Image & Include Android Side
실습 2 Android Side
Event Information Android Side Top ui_twodepth_menu_title Content ui_twodepth_menu_content ui_twodepth_menu
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
Image 확대 Android Side