스마트기기개발관련/안드로이드 개발

android 안드로이드 - 안드로이드 화면 관련 이벤트 처리(ViewTreeObserver)

AlrepondTech 2012. 10. 23. 16:12
반응형

 

 

 

=================================

=================================

=================================

 

 

 

 

 

출처: http://blog.naver.com/dong277?Redirect=Log&logNo=130082728620


java.lang.Object
   ↳ android.view.ViewTreeObserver

 

 

Nested Classes
interface ViewTreeObserver.OnGlobalFocusChangeListener Interface definition for a callback to be invoked when the focus state within the view tree changes. 자식뷰들의 포커스가 변경되는 것을 알 수 있다.
interface ViewTreeObserver.OnGlobalLayoutListener Interface definition for a callback to be invoked when the global layout state or the visibility of views within the view tree changes. 어떤 뷰의 레이아웃이나 가시성이 변경되는 것을 알 수 있다.
interface ViewTreeObserver.OnPreDrawListener Interface definition for a callback to be invoked when the view tree is about to be drawn. 
화면에 그려지기 전에 특정한 작업을 할 수 있다.
interface ViewTreeObserver.OnScrollChangedListener Interface definition for a callback to be invoked when something in the view tree has been scrolled. 
interface ViewTreeObserver.OnTouchModeChangeListener Interface definition for a callback to be invoked when the touch mode changes. 
터치모드가 변경되는 것을 알 수 있다.

 

 

사용예)

View all = findViewById(R.id.layout_total_container);//레이아웃xml의 첫번째 레이아웃 아이디 

ViewTreeObserver vto = all.getViewTreeObserver();//옵저버 얻기

//터치모드 변경 리스너 등록

vto.addOnTouchModeChangeListener(new ViewTreeObserver.OnTouchModeChangeListener() {

     public void onTouchModeChanged(boolean isInTouchMode) {
      //To do something

     }
 });

//자식뷰의 포커스 변경 이벤트 리스너 등록

vto.addOnGlobalFocusChangeListener(new ViewTreeObserver.OnGlobalFocusChangeListener() {

     public void onGlobalFocusChanged(View oldFocus, View newFocus) {

          //oldFocus : 이전 포커싱되었던 뷰

          //newFocus : 현재 포커싱된 뷰
         if (oldFocus != null && newFocus != null)

         //To do something
     }

});

 

vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
   
   @Override
   public void onGlobalLayout() {
    // TODO Auto-generated method stub
    
   }
  });
  vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
   
   @Override
   public boolean onPreDraw() {
    // TODO Auto-generated method stub
    return false;
   }
  });
  vto.addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
   
   @Override
   public void onScrollChanged() {
    // TODO Auto-generated method stub
    
   }
  });

 

 

 

=================================

=================================

=================================

 

 

 

반응형