본문 바로가기

Android

[13일차]View의 상태 저장

View 이 상태저장


super가 가지는 상위 parent 정보를 얻어서 해당 하는 차일드의 pacelable객체로 저장한다. 


super보고 복원하고 자기자신은 내 정보만 가지고 복원한다. 



나는 super가 알아서 저장하는 parcelable객체를 가져와서 저장하면 되는거고, 그걸 던지면 알아서 복원해 하면된다. 



그럼 결국 parcelable를 관리만 해주면 된다는 얘기다. 



onSaveInstanceState 객체가 생성된다. 


이건 parceable을 리턴하면된다. 


onRestore... 이런함수가 pareceable을 가지고 정보를 복원한다. 


super의 parcelable을 관리해야하는데 이 클래스가 BaseSavedState라는 클래스다. 


super에서 받은 parcelable을 관리해주는 클래스다. 


비트맵은 parcelable을 저장하면 안된다. parcelable은 1MB의 크기 제한이 있다. 



일반적으로 Text라든지 , Int이런거를 저장한다. 



얘 안에 상태를 저장하기 위해서 onSaveInstanceState() 함수를 호출하고, 

onRestoreInstanceState()도 호출한다. 


class SavedState extexds BaseSavedState 의 내부 클래스를 만들어준다. 


여기에 writeToParcel()을 만들어야 한다. 


public static parcelable.Creator<SavedState> CREATOR = new Parcelable.Creator<savedInstance>


public SavedState(Parcel parcel){


} 이것도 만들어 준다. 


SavedState[] newArray () 이것도 만든다. 


얘가 비트맵을 하나 가지고 있어야 되니까 Bitmap bitmap;


이건 보고 치면되고 어떤 컨셉으로 순서가 이루어지는지 공부하면된다. 


InputEvent


사용자의 입력을 추상화한 class.

TouchEvent, InputEvent를 상속하고 있다. 

얘가 ACTION을 가지고 있다. 

모션이벤트는 포인터와 같은 디바이스 정보를 가지고 있는데 터치 한 곳의 x,y좌표를 가지고 , 뗏는지 누르고 있는지 를 알고있다. 

키는 동시에 여러개가 오는경우가 없지만, 터치는 멀티터치가 가능하다. 

처음 이벤트가 오면dispatchxxx 라는 함수가 호출이된다. 이 함수에서 차일드가 있으면 차일드한테 보낸다. 
거기에 있는 키 같은 경우 onKeyEvent이런 함수들을 호출해 준다. 이 함수들은 true,false를 리턴한다. 차일드가 true를 리턴하면 parent가 처리하지 않지만 false이면 parent에서 처리한다. 받는건 parent가 먼저 받지만 처리는 child가 처리한다 안하면 parent가 처리하는게 기본 원칙이다. 

주의사항!!!: 한가지 Touch이벤트는 터치 다운이 됬을때, true를 리턴하지 않으면 다음 이벤트가 오지 않는다. 

VolumUp을 눌렀을 때, 앱에 뷰에서 처리할 경우 볼륨키를 액티비티나, 시스템이 못받아서 처리가 안된다. 이말이구나... 

MotionEvent.ACTION_DOWN일때, 무조건 true를 리턴해준다. 

Touch 이벤트는 차일드에 가기전에 인터셉트 이벤트가 발생할 수도 있다. 


모션이벤트 멀티터치


GestureDetector

이게 어떤 이벤트인지 판별하는 클래스 

Scroll가지고 이미지의 위치를 변경하는 이벤트 실습.




ViewGroup Touch 처리 

onInterceptTouchEvent

TouchEvent를 처리하기 위한 메소드
일반적인 Event처리 순서는 Child에서 먼저 처리하고 처리하지 않으면 parent가 처리하는 순서이지만, 이메소드를 이용하여child가 처리하기 전에 ViewGroup이 먼저 처리할 수 있음.

TouchDelegate ChildView에 터치 영역을 바꾸고 싶을 때, 사용한다. 

ViewConfiguration 최소 얼마정도가 플링이다 이런거 설정하는 거 여기서 처리해주면 된다. 




'Android' 카테고리의 다른 글

[14일차]SurfaceView  (0) 2016.08.04
[13일차] 그리기, 접근성  (0) 2016.08.03
[13일차] 커스텀 뷰 그래픽  (0) 2016.08.03
[13일차]그래픽 실습.  (0) 2016.08.03
[13일차] 그래픽  (0) 2016.08.03